1- # 워크플로우 이름 지정
2- name: CI/CD
3-
4- # 워크플로우가 시작될 조건 지정
5- on:
6- push:
7- branches: [ main ]
8- pull_request:
9- branches: [ main ]
10-
11- env:
12- KEY_DIR: src/main/resources
13- KEY_DIR_FILE_NAME: application-key.yml
14- AWS_REGION: ap-northeast-2
15- S3_BUCKET_NAME: blog-deploy
16- CODE_DEPLOY_APPLICATION_NAME: spring-boot-3-blog-app
17- CODE_DEPLOY_DEPLOYMENT_GROUP_NAME: spring-boot-3-blog-deploy-group
18-
19- # OIDC에 쓰이는 ID 토큰 발급을 위해 정의
20- permissions:
21- id-token: write
22- contents: read # This is required for actions/checkout
23-
24- jobs:
25- deploy:
26- runs-on: ubuntu-latest # 실행 환경 지정
27-
28- # 실행 스탭 지정
29- steps:
30- - uses: actions/checkout@v3
31-
32- - uses: actions/setup-java@v3
33- with:
34- distribution: 'zulu'
35- java-version: '17'
36-
37- - name: Make Key yml file
38- run:
39- echo ${{ secrets.KEY_YML }} | base64 --decode > ${{ env.KEY_DIR }}/${{ env.KEY_DIR_FILE_NAME }}
40-
41- - name: Setup MySQL
42- uses: mirromutth/mysql-action@v1.1
43- with:
44- host port: 3306
45- container port: 3306
46- mysql database: 'blog'
47- mysql user: ${{ secrets.DB_USERNAME }}
48- mysql password: ${{ secrets.DB_PASSWORD }}
49-
50- - name: Grant execute permission for gradlew
51- run: chmod +x gradlew
52-
53- - name: Build with Gradle
54- run: ./gradlew clean build
55-
56- # 현재 시간 가져오기
57- # - name: Get Current Time
58- # uses: josStorer/get-current-time@v2.0.2
59- # id: current-time
60- # with:
61- # format: YYYY-MM-DDHH-mm-ss
62- # utcOffset: "+09:00"
63-
64- # 배포용 패키지 경로 저장
65- - name: Set JAR_FILE_NAME EV
66- run: echo "JAR_FILE_NAME=$(ls ./build/libs)" >> $GITHUB_ENV
67-
68- # build한 파일 모두 압축
69- - name: Make zip file
70- run: zip -r ./$GITHUB_SHA.zip .
71-
72- # AWS OIDC
73- - name: Configure AWS credentials
74- uses: aws-actions/configure-aws-credentials@v3
75- with:
76- role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
77- aws-region: ${{ env.AWS_REGION }}
78-
79- # script files 복사
80- # - name: Copy script
81- # run: cp ./scripts/*.sh ./deploy
82-
83- - name: Upload to AWS S3
84- run: aws s3 cp --region $AWS_REGION ./$GITHUB_SHA.zip s3://$S3_BUCKET_NAME/$GITHUB_SHA.zip
85-
86- - name: Deploy to AWS EC2 from S3
87- run: |
88- aws deploy create-deployment \
89- --application-name ${{ env.CODE_DEPLOY_APPLICATION_NAME }} \
90- --deployment-config-name CodeDeployDefault.AllAtOnce \
91- --deployment-group-name ${{ env.CODE_DEPLOY_DEPLOYMENT_GROUP_NAME }} \
92- --file-exists-behavior OVERWRITE \
1+ # 워크플로우 이름 지정
2+ name: CI/CD
3+
4+ # 워크플로우가 시작될 조건 지정
5+ on:
6+ push:
7+ branches: [ main ]
8+ pull_request:
9+ branches: [ main ]
10+
11+ env:
12+ KEY_DIR: src/main/resources
13+ KEY_DIR_FILE_NAME: application-key.yml
14+ AWS_REGION: ap-northeast-2
15+ S3_BUCKET_NAME: blog-deploy
16+ CODE_DEPLOY_APPLICATION_NAME: spring-boot-3-blog-app
17+ CODE_DEPLOY_DEPLOYMENT_GROUP_NAME: spring-boot-3-blog-deploy-group
18+
19+ # OIDC에 쓰이는 ID 토큰 발급을 위해 정의
20+ permissions:
21+ id-token: write
22+ contents: read # This is required for actions/checkout
23+
24+ jobs:
25+ deploy:
26+ runs-on: ubuntu-latest # 실행 환경 지정
27+
28+ # 실행 스탭 지정
29+ steps:
30+ - uses: actions/checkout@v3
31+
32+ - uses: actions/setup-java@v3
33+ with:
34+ distribution: 'zulu'
35+ java-version: '17'
36+
37+ - name: Make Key yml file
38+ run:
39+ echo ${{ secrets.KEY_YML }} | base64 --decode > ${{ env.KEY_DIR }}/${{ env.KEY_DIR_FILE_NAME }}
40+
41+ - name: Setup MySQL
42+ uses: mirromutth/mysql-action@v1.1
43+ with:
44+ host port: 3306
45+ container port: 3306
46+ mysql database: 'blog'
47+ mysql user: ${{ secrets.DB_USERNAME }}
48+ mysql password: ${{ secrets.DB_PASSWORD }}
49+
50+ - name: Grant execute permission for gradlew
51+ run: chmod +x gradlew
52+
53+ - name: Build with Gradle
54+ run: ./gradlew clean build
55+
56+ # 현재 시간 가져오기
57+ # - name: Get Current Time
58+ # uses: josStorer/get-current-time@v2.0.2
59+ # id: current-time
60+ # with:
61+ # format: YYYY-MM-DDHH-mm-ss
62+ # utcOffset: "+09:00"
63+
64+ # 배포용 패키지 경로 저장
65+ - name: Set JAR_FILE_NAME EV
66+ run: echo "JAR_FILE_NAME=$(ls ./build/libs)" >> $GITHUB_ENV
67+
68+ # build한 파일 모두 압축
69+ - name: Make zip file
70+ run: zip -r ./$GITHUB_SHA.zip .
71+
72+ # AWS OIDC
73+ - name: Configure AWS credentials
74+ uses: aws-actions/configure-aws-credentials@v3
75+ with:
76+ role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
77+ aws-region: ${{ env.AWS_REGION }}
78+
79+ # script files 복사
80+ # - name: Copy script
81+ # run: cp ./scripts/*.sh ./deploy
82+
83+ - name: Upload to AWS S3
84+ run: aws s3 cp --region $AWS_REGION ./$GITHUB_SHA.zip s3://$S3_BUCKET_NAME/$GITHUB_SHA.zip
85+
86+ - name: Deploy to AWS EC2 from S3
87+ run: |
88+ aws deploy create-deployment \
89+ --application-name ${{ env.CODE_DEPLOY_APPLICATION_NAME }} \
90+ --deployment-config-name CodeDeployDefault.AllAtOnce \
91+ --deployment-group-name ${{ env.CODE_DEPLOY_DEPLOYMENT_GROUP_NAME }} \
92+ --file-exists-behavior OVERWRITE \
9393 --s3-location bucket=$S3_BUCKET_NAME,key=$GITHUB_SHA.zip,bundleType=zip
0 commit comments