From 5085660c0cc42b8655f0ff4b8a0b78a5547dd509 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=8A=B9=EC=9A=B0?= <112797234+phonil@users.noreply.github.com> Date: Mon, 11 Dec 2023 03:40:15 +0900 Subject: [PATCH] feat: add deploy.yml for cicd --- .github/workflows/deploy.yml | 77 ++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..52b16ed --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,77 @@ +name: CI and Deploy to Amazon EC2 + +on: + # Triggers the workflow on push events but only for the "main" branch + push: + branches: [ "main" ] + +# 본인이 설정한 값을 여기서 채워넣습니다. +# 리전, 버킷 이름, CodeDeploy 앱 이름, CodeDeploy 배포 그룹 이름 +env: + AWS_REGION: ap-northeast-2 + S3_BUCKET_NAME: rolling-paper-github-actions-s3-bucket + CODE_DEPLOY_APPLICATION_NAME: rolling-paper-codedeploy-app + CODE_DEPLOY_DEPLOYMENT_GROUP_NAME: rolling-paper-codedeploy-app-group + +permissions: + contents: read + +jobs: + deploy: + name: Deploy + runs-on: ubuntu-latest + environment: production + + steps: + # (1) 기본 체크아웃 + - name: Checkout + uses: actions/checkout@v3 + + # (2) JDK 17 세팅 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' + + ## create application-rds.yml && application-s3.yml && application-auth.yml + - name: create application.properties file + run: | + touch ./src/main/resources/application-rds.yml + echo "${{ secrets.DATABASE_YML }}" | base64 --decode > src/main/resources/application-rds.yml + + #추가 + - name: Make Gradle Wrapper script executable + run: chmod +x /home/runner/work/Rolling-Paper-Server/Rolling-Paper-Server/gradlew + + # (3) Gradle build (Test 제외) + - name: Build with Gradle + uses: gradle/gradle-build-action@0d13054264b0bb894ded474f08ebb30921341cee + with: + arguments: clean build -x test + + # (4) AWS 인증 (IAM 사용자 Access Key, Secret Key 활용) + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ env.AWS_REGION }} + + # (5) 빌드 결과물을 S3 버킷에 업로드 + - name: Upload to AWS S3 + run: | + aws deploy push \ + --application-name ${{ env.CODE_DEPLOY_APPLICATION_NAME }} \ + --ignore-hidden-files \ + --s3-location s3://$S3_BUCKET_NAME/$GITHUB_SHA.zip \ + --source . + + # (6) S3 버킷에 있는 파일을 대상으로 CodeDeploy 실행 + - name: Deploy to AWS EC2 from S3 + run: | + aws deploy create-deployment \ + --application-name ${{ env.CODE_DEPLOY_APPLICATION_NAME }} \ + --deployment-config-name CodeDeployDefault.AllAtOnce \ + --deployment-group-name ${{ env.CODE_DEPLOY_DEPLOYMENT_GROUP_NAME }} \ + --s3-location bucket=$S3_BUCKET_NAME,key=$GITHUB_SHA.zip,bundleType=zip