|
5 | 5 | - release |
6 | 6 | paths: |
7 | 7 | - "src/backend/**" |
| 8 | + - "src/go/**" |
8 | 9 | workflow_dispatch: |
9 | 10 |
|
10 | 11 | jobs: |
@@ -133,3 +134,93 @@ jobs: |
133 | 134 | key: ${{ secrets.EC2_SSH_KEY }} |
134 | 135 | script: | |
135 | 136 | docker exec backend-service npx prisma migrate deploy --schema=/app/prisma/schema.prisma |
| 137 | +
|
| 138 | + deploy-market-item-stat-scraper: |
| 139 | + name: Build and Deploy Market Item Stat Scraper |
| 140 | + runs-on: ubuntu-latest |
| 141 | + steps: |
| 142 | + - name: Checkout code |
| 143 | + uses: actions/checkout@v3 |
| 144 | + |
| 145 | + - name: Configure AWS credentials for ECR |
| 146 | + uses: aws-actions/configure-aws-credentials@v1 |
| 147 | + with: |
| 148 | + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} |
| 149 | + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} |
| 150 | + aws-region: ap-northeast-2 |
| 151 | + |
| 152 | + - name: Login to Amazon ECR |
| 153 | + id: login-ecr |
| 154 | + uses: aws-actions/amazon-ecr-login@v1 |
| 155 | + |
| 156 | + - name: Build and Push Docker image |
| 157 | + env: |
| 158 | + ECR_REGISTRY: ${{ secrets.ECR_REGISTRY }} |
| 159 | + IMAGE_TAG: ${{ github.sha }} |
| 160 | + run: | |
| 161 | + docker build -t $ECR_REGISTRY/loa-life:market-item-stat-scraper-$IMAGE_TAG -f src/go/apps/market-item-stat-scraper/Dockerfile . |
| 162 | + docker push $ECR_REGISTRY/loa-life:market-item-stat-scraper-$IMAGE_TAG |
| 163 | + docker tag $ECR_REGISTRY/loa-life:market-item-stat-scraper-$IMAGE_TAG $ECR_REGISTRY/loa-life:market-item-stat-scraper-latest |
| 164 | + docker push $ECR_REGISTRY/loa-life:market-item-stat-scraper-latest |
| 165 | +
|
| 166 | + - name: Install AWS CLI on EC2 |
| 167 | + uses: appleboy/ssh-action@master |
| 168 | + with: |
| 169 | + host: ${{ secrets.MISS_EC2_HOST }} |
| 170 | + username: ubuntu |
| 171 | + key: ${{ secrets.MISS_EC2_SSH_KEY }} |
| 172 | + script: | |
| 173 | + if ! command -v aws &> /dev/null; then |
| 174 | + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" |
| 175 | + sudo apt install -y unzip |
| 176 | + unzip awscliv2.zip |
| 177 | + sudo ./aws/install |
| 178 | + rm -rf aws awscliv2.zip |
| 179 | + fi |
| 180 | +
|
| 181 | + if ! command -v docker &> /dev/null; then |
| 182 | + sudo apt-get update |
| 183 | + sudo apt-get install -y ca-certificates curl gnupg |
| 184 | + sudo install -m 0755 -d /etc/apt/keyrings |
| 185 | + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg |
| 186 | + sudo chmod a+r /etc/apt/keyrings/docker.gpg |
| 187 | + echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null |
| 188 | + sudo apt-get update |
| 189 | + sudo apt-get install -y docker-ce docker-ce-cli containerd.io |
| 190 | + sudo usermod -aG docker ubuntu |
| 191 | + fi |
| 192 | +
|
| 193 | + # Configure AWS CLI |
| 194 | + mkdir -p ~/.aws |
| 195 | + cat > ~/.aws/credentials << EOF |
| 196 | + [default] |
| 197 | + aws_access_key_id = ${{ secrets.AWS_ACCESS_KEY_ID }} |
| 198 | + aws_secret_access_key = ${{ secrets.AWS_SECRET_ACCESS_KEY }} |
| 199 | + EOF |
| 200 | +
|
| 201 | + cat > ~/.aws/config << EOF |
| 202 | + [default] |
| 203 | + region = ap-northeast-2 |
| 204 | + output = json |
| 205 | + EOF |
| 206 | +
|
| 207 | + - name: Deploy to EC2 |
| 208 | + uses: appleboy/ssh-action@master |
| 209 | + with: |
| 210 | + host: ${{ secrets.MISS_EC2_HOST }} |
| 211 | + username: ubuntu |
| 212 | + key: ${{ secrets.MISS_EC2_SSH_KEY }} |
| 213 | + script: | |
| 214 | + aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin ${{ secrets.ECR_REGISTRY }} |
| 215 | + docker pull ${{ secrets.ECR_REGISTRY }}/loa-life:market-item-stat-scraper-latest |
| 216 | +
|
| 217 | + docker stop market-item-stat-scraper || true |
| 218 | + docker rm market-item-stat-scraper || true |
| 219 | +
|
| 220 | + docker run -d \ |
| 221 | + --name market-item-stat-scraper \ |
| 222 | + -e DATABASE_URL="${{ secrets.DATABASE_URL }}" \ |
| 223 | + -e LOA_API_BASE_URL="${{ secrets.LOA_API_BASE_URL }}" \ |
| 224 | + -e LOA_API_TOKEN="${{ secrets.LOA_API_TOKEN }}" \ |
| 225 | + --restart always \ |
| 226 | + ${{ secrets.ECR_REGISTRY }}/loa-life:market-item-stat-scraper-latest |
0 commit comments