1
+ name : Deploy to Amazon EC2
2
+
3
+ on :
4
+ push :
5
+ branches :
6
+ - main
7
+
8
+ # 리전, 버킷 이름, CodeDeploy 앱 이름, CodeDeploy 배포 그룹 이름
9
+ env :
10
+ AWS_REGION : ap-northeast-2
11
+ S3_BUCKET_NAME : bloomgroom-bucket
12
+ CODE_DEPLOY_APPLICATION_NAME : bloomgroom-codedeploy-app
13
+ CODE_DEPLOY_DEPLOYMENT_GROUP_NAME : bloomgroom-codedeploy-deployment-group
14
+
15
+ permissions :
16
+ contents : read
17
+
18
+ jobs :
19
+ deploy :
20
+ name : Deploy
21
+ runs-on : ubuntu-latest
22
+ environment : production
23
+
24
+ steps :
25
+ # (1) 기본 체크아웃
26
+ - name : Checkout
27
+ uses : actions/checkout@v3
28
+
29
+ # (2) JDK 17 세팅
30
+ - name : Set up JDK 17
31
+ uses : actions/setup-java@v3
32
+ with :
33
+ distribution : ' temurin'
34
+ java-version : ' 17'
35
+
36
+ # (3) YML 파일 생성
37
+ - name : Set YML
38
+ run : |
39
+ mkdir -p src/main/resources/database
40
+ echo "${{ secrets.APPLICATION_DATABASE_YML }}" | base64 --decode > src/main/resources/database/application-database.yml
41
+ mkdir -p src/main/resources/oauth2
42
+ echo "${{ secrets.APPLICATION_OAUTH2_YML }}" | base64 --decode > src/main/resources/oauth2/application-oauth2.yml
43
+ mkdir -p src/main/resources/s3
44
+ echo "${{ secrets.APPLICATION_S3_YML }}" | base64 --decode > src/main/resources/s3/application-s3.yml
45
+
46
+
47
+ # (4) Gradle build (Test 제외)
48
+ - name : Build with Gradle
49
+ uses : gradle/gradle-build-action@0d13054264b0bb894ded474f08ebb30921341cee
50
+ with :
51
+ arguments : clean build -x test
52
+
53
+ # (5) AWS 인증 (IAM 사용자 Access Key, Secret Key 활용)
54
+ - name : Configure AWS credentials
55
+ uses : aws-actions/configure-aws-credentials@v1
56
+ with :
57
+ aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY_ID }}
58
+ aws-secret-access-key : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
59
+ aws-region : ap-northeast-2
60
+
61
+ # (6) 빌드 결과물을 S3 버킷에 업로드
62
+ - name : Upload to AWS S3
63
+ run : |
64
+ aws deploy push \
65
+ --application-name ${{ env.CODE_DEPLOY_APPLICATION_NAME }} \
66
+ --ignore-hidden-files \
67
+ --s3-location s3://$S3_BUCKET_NAME/$GITHUB_SHA.zip \
68
+ --source .
69
+
70
+ # (7) S3 버킷에 있는 파일을 대상으로 CodeDeploy 실행
71
+ - name : Deploy to AWS EC2 from S3
72
+ run : |
73
+ aws deploy create-deployment \
74
+ --application-name ${{ env.CODE_DEPLOY_APPLICATION_NAME }} \
75
+ --deployment-config-name CodeDeployDefault.AllAtOnce \
76
+ --deployment-group-name ${{ env.CODE_DEPLOY_DEPLOYMENT_GROUP_NAME }} \
77
+ --s3-location bucket=$S3_BUCKET_NAME,key=$GITHUB_SHA.zip,bundleType=zip
0 commit comments