Skip to content

Commit 8b8ffb5

Browse files
committed
market-item-stat-scraper ๋ฐฐํฌ
1 parent 85be690 commit 8b8ffb5

File tree

2 files changed

+113
-2
lines changed

2 files changed

+113
-2
lines changed

โ€Ž.github/workflows/release.ymlโ€Ž

Lines changed: 91 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ on:
55
- release
66
paths:
77
- "src/backend/**"
8+
- "src/go/**"
89
workflow_dispatch:
910

1011
jobs:
@@ -102,7 +103,7 @@ jobs:
102103
key: ${{ secrets.EC2_SSH_KEY }}
103104
script: |
104105
aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin ${{ secrets.ECR_REGISTRY }}
105-
docker pull ${{ secrets.ECR_REGISTRY }}/loa-life:backend-api-latest
106+
docker pull $ECR_REGISTRY/loa-life:backend-api-latest
106107
107108
docker stop backend-service || true
108109
docker rm backend-service || true
@@ -123,7 +124,7 @@ jobs:
123124
-e AUTH_SUCCESS_URL="${{ secrets.AUTH_SUCCESS_URL }}" \
124125
-e CLIENT_ENDPOINT="${{ secrets.CLIENT_ENDPOINT }}" \
125126
--restart always \
126-
${{ secrets.ECR_REGISTRY }}/loa-life:backend-api-latest
127+
$ECR_REGISTRY/loa-life:backend-api-latest
127128
128129
- name: Run Database Migrations
129130
uses: appleboy/ssh-action@master
@@ -133,3 +134,91 @@ jobs:
133134
key: ${{ secrets.EC2_SSH_KEY }}
134135
script: |
135136
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+
--restart always \
224+
${{ secrets.ECR_REGISTRY }}/loa-life:market-item-stat-scraper-latest
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
FROM golang:1.23-alpine AS builder
2+
3+
WORKDIR /app
4+
5+
COPY . .
6+
7+
WORKDIR /app/src/go/apps/market-item-stat-scraper
8+
9+
RUN go mod download
10+
11+
RUN CGO_ENABLED=0 GOOS=linux go build -o market-item-stat-scraper .
12+
13+
FROM alpine:latest
14+
15+
WORKDIR /app
16+
17+
RUN apk --no-cache add tzdata
18+
ENV TZ=Asia/Seoul
19+
20+
COPY --from=builder /app/src/go/apps/market-item-stat-scraper/market-item-stat-scraper /app/market-item-stat-scraper
21+
22+
CMD ["/app/market-item-stat-scraper"]

0 commit comments

Comments
ย (0)