Skip to content

Commit 06adbdf

Browse files
authored
Merge pull request #318 from sopt-makers/infra/#317
[INFRA] prod 서버 배포 스크립트 수정 및 도커 적용
2 parents 6f2c9ef + cd5b99e commit 06adbdf

4 files changed

Lines changed: 47 additions & 43 deletions

File tree

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
[FEAT] 새로운 기능을 개발하거나 추가, 변경할 경우(spring boot 내의 기능 코드)
77
[FIX] 버그를 발견하여 코드를 수정한 경우(spring boot 내의 기능 코드)
88
[REFACTOR] 코드의 효율/가독성을 위해 수정한 경우
9-
[CHORE] 업무적 기능과 무관한, 자잘한 정비 작업 ex) 패키지 구조 및 파일 이름 수정, 로그 레벨 조정 등 작은 설정**
9+
[CHORE] 업무적 기능과 무관한, 자잘한 정비 작업 ex) 패키지 구조 및 파일 이름 수정, 로그 레벨 조정 등 작은 설정
1010
[INFRA] docker, nginx와 관련되어 CD 로직을 수정하는 경우
11-
[DOCS] README를 수정하는 경우
11+
[DOCS] README, Swagger관련 수정하는 경우
1212
[SETTING] 프로젝트에 세팅을 하는 경우 (ex. 초기 세팅, 오픈소스 도입 등)
1313
-->
1414

.github/workflows/cd-dev.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
AWS_ECR_REPO: ${{ secrets.AWS_ECR_REPO_DEV }}
3434
run: |
3535
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
36-
docker build -t $AWS_ECR_REPO .
36+
docker build -t $AWS_ECR_REPO --build-arg PROFILE=test .
3737
docker tag $AWS_ECR_REPO:latest public.ecr.aws/$AWS_ACCOUNT_ID/$AWS_ECR_REPO:latest
3838
docker push public.ecr.aws/$AWS_ACCOUNT_ID/$AWS_ECR_REPO:latest
3939

.github/workflows/cd-prod.yml

Lines changed: 41 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
name: cd-prod
1+
name: cd-dev
22

33
on:
44
workflow_dispatch:
55
push:
66
branches: [ main ]
77

88
jobs:
9-
build-and-push-and-deploy:
9+
build-and-push:
1010
runs-on: ubuntu-22.04
1111

1212
steps:
13-
- name: Checkout
13+
- name: Checkout
1414
uses: actions/checkout@v3
1515

16-
- name: Set up JDK 17
16+
- name: ⚙️ Set up JDK 17
1717
uses: actions/setup-java@v3
1818
with:
1919
java-version: 17
@@ -27,55 +27,56 @@ jobs:
2727
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
2828
aws-region: ${{ secrets.AWS_REGION }}
2929

30-
- name: Grant execute permission for gradlew
31-
run: chmod +x ./gradlew
32-
shell: bash
33-
34-
- name: Create Property
35-
run: |
36-
touch ./operation-api/src/main/resources/application-prod.yml
37-
echo "${{ secrets.APPLICATION_PROD }}" >> ./operation-api/src/main/resources/application-prod.yml
38-
39-
mkdir -p ./operation-api/src/main/resources/static
40-
echo "${{ secrets.APPLE_KEY }}" | base64 --decode > ./operation-api/src/main/resources/static/${{ secrets.APPLE_KEY_NAME }}
41-
4230
- name: 🧱 Build Image and Push to ECR
4331
env:
4432
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }}
4533
AWS_ECR_REPO: ${{ secrets.AWS_ECR_REPO_PROD }}
4634
run: |
4735
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
48-
docker build -t $AWS_ECR_REPO .
36+
docker build -t $AWS_ECR_REPO --build-arg PROFILE=prod .
4937
docker tag $AWS_ECR_REPO:latest public.ecr.aws/$AWS_ACCOUNT_ID/$AWS_ECR_REPO:latest
5038
docker push public.ecr.aws/$AWS_ACCOUNT_ID/$AWS_ECR_REPO:latest
5139
52-
- name: 📝 Copy Script File
40+
deploy:
41+
needs: build-and-push
42+
runs-on: ubuntu-latest
43+
44+
steps:
45+
- name: ✅ Checkout
46+
uses: actions/checkout@v3
47+
48+
- name: 🔒 Configure AWS credentials
49+
uses: aws-actions/configure-aws-credentials@v1
50+
with:
51+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
52+
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
53+
aws-region: ${{ secrets.AWS_REGION }}
54+
55+
- name: 📝 Copy Files from S3
5356
env:
5457
REGION: ${{ secrets.AWS_REGION }}
5558
S3_BUCKET: ${{ secrets.AWS_BUCKET_NAME }}
5659
run: |
57-
mkdir script
5860
aws s3 cp --region $REGION \
59-
s3://$S3_BUCKET/prod/script/deploy.sh script/deploy.sh
60-
aws s3 cp --region $REGION \
61-
s3://$S3_BUCKET/prod/script/switch.sh script/switch.sh
62-
aws s3 cp --region $REGION \
63-
s3://$S3_BUCKET/prod/script/valid.sh script/valid.sh
61+
s3://$S3_BUCKET/prod/prod.env ./application.env
6462
65-
- name: Make zip file
66-
run: zip -r ./$GITHUB_SHA.zip ./script
67-
shell: bash
63+
- name: 🔄 Transfer Files to Server
64+
uses: appleboy/scp-action@master
65+
with:
66+
host: ${{ secrets.HOST_PROD }}
67+
username: ec2-user
68+
key: ${{ secrets.PEM_KEY_PROD }}
69+
port: 22
70+
source: "application.env"
71+
target: /home/ubuntu/operation/env
72+
overwrite: true
6873

69-
- name: Upload Property Zip to S3 and Create Code Deploy
70-
env:
71-
REGION: ${{ secrets.AWS_REGION }}
72-
DEPLOY_APPLICATION: ${{ secrets.AWS_DEPLOY_APPLICATION }}
73-
DEPLOY_GROUP: ${{ secrets.AWS_DEPLOY_GROUP_PROD }}
74-
S3_BUCKET: ${{ secrets.AWS_BUCKET_NAME }}
75-
run: |
76-
aws s3 cp --region $REGION ./$GITHUB_SHA.zip s3://$S3_BUCKET/prod/deploy/$GITHUB_SHA.zip
77-
78-
aws deploy create-deployment --application-name $AWS_DEPLOY_APPLICATION_NAME
79-
--deployment-config-name CodeDeployDefault.AllAtOnce
80-
--deployment-group-name $DEPLOY_GROUP
81-
--s3-location bucket=$S3_BUCKET,bundleType=zip,key=prod/deploy/$GITHUB_SHA.zip
74+
- name: 🚀SSH command deploy
75+
uses: appleboy/ssh-action@master
76+
with:
77+
host: ${{ secrets.HOST_PROD }}
78+
username: ubuntu
79+
key: ${{ secrets.PEM_KEY_PROD }}
80+
port: 22
81+
script: |
82+
/home/ubuntu/operation/scripts/deploy.sh

Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ WORKDIR /app-run
2020
# copy .jar to Run-Time Image
2121
COPY --from=builder /app-build/build/libs/operation.jar /app-run/operation.jar
2222

23+
# 환경 변수로 프로파일을 설정할 수 있도록 함
24+
ENV PROFILE=${PROFILE}
25+
2326

2427
EXPOSE 8080
2528
ENTRYPOINT ["java"]

0 commit comments

Comments
 (0)