You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
How to deploy using AWS CodeDeploy with GitHub Actions
AWS CodeDeploy를 활용한 깃헙 액션 사용법
스텝
Step 1. 별도의 deploy 브랜치를 만드세요.
아래의 예시에서는 deploy-action입니다.
Step 2. repo의 actions 탭을 눌러서 다음의 yml을 입력하세요.
GitHub Actions는 별도의 컨테이너(AWS와 관련없음)에서 자바 빌드파일을 만들어서 S3로 압축파일로 던집니다.
AWS CodeDeploy는 S3에 업데이트 된 빌드 압축파일을 받아서 EC2에 코드 배포를 실행합니다.
# github action workflow yml file# 액션의 이름이다.name: CI# 언제 액션이 이루어질 지 정할 수 있다. 아래에 브랜치를 지정해주면 된다.# 우리는 deploy 브랜치에 Push되면 자동 배포하도록 정의할 것이다.on:
push:
branches: [ deploy-action ]# 아래의 Job들이 깃헙 액션에서 진행된다.jobs:
# 하나의 Job을 정의한다. 여기서 Job의 이름은 build이다.deploy:
name: DEPLOY# 빌드가 어느 운영체제에서 돌아가느냐?runs-on: ubuntu-18.04env:
working-directory: ./BE# step은 job의 하위 집합이다. step에서 정의한 작업을 순차적으로 진행한다.steps:
- name: Debug Actionuses: hmarr/debug-action@v1.0.0# 위에서 정의한 브랜치로 체크아웃한다.
- name: Checkoutuses: actions/checkout@v2# 메시지를 출력한다.
- name: Run a one-line scriptrun: echo Start Deploy.# 여러 가지의 메시지를 출력할 수 있다.
- name: Run a multi-line scriptrun: | echo We love Honux, echo CodeSquad 2020 Java Backend.# 자바 버전을 설정해준다.
- name: Set up JDK 1.8uses: actions/setup-java@v1with:
java-version: 1.8# Gradle에 실행 권한을 부여한다.
- name: Grant execute permission for gradlewrun: | echo $pwd chmod +x gradlewshell: bashworking-directory: ./BE# Gradle을 활용해 배포한다.
- name: Build with Gradlerun: | ./gradlew build -x testshell: bashworking-directory: ./BE# 버전마다 이름을 다르게 하기 위해서 GITHUB_SHA라고 하는 해시이름을 활용하여 zip 파일을 만든다.# CodeDeploy를 사용하기 위해서는 S3를 거쳐야 한다. 따라서 압축된 파일을 만들어주고 이를 옮긴다.
- name: Make zip filerun: zip -qq -r ./$GITHUB_SHA.zip .shell: bashworking-directory: ./BE/build/libs# AWS 서비스를 사용하기 위한 인증 과정이다.
- name: Configure AWS credentialsuses: aws-actions/configure-aws-credentials@v1with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}aws-region: ap-northeast-2# 배포 zip 파일을 S3에 업로드한다.
- name: Upload to S3run: aws s3 cp --region ap-northeast-2 ./$GITHUB_SHA.zip s3://sigrid-deploy/$PROJECT_NAME/$GITHUB_SHA.zipworking-directory: ./BE/build/libs# 실제로 코드를 배포한다.
- name: Code Deployrun: aws deploy create-deployment --application-name sigrid-dev --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name sigrid-dev --s3-location bucket=sigrid-deploy,bundleType=zip,key=$PROJECT_NAME/$GITHUB_SHA.zip
아래는 Sunny의 자료이다.
https://www.notion.so/Github-Action-Deploy-ac95df239e844c17861b10dedfdc9734