7. Github Actions 설정 - hoho4190/aws-ec2-cicd-with-github-actions GitHub Wiki
7.1. PR CI workflow
main
브런치로 PR 발생 시 gradle build
실행
.github/workflows/gradle-pr-ci.yml
name: Gradle PR CI
on:
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 8
uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'temurin'
- name: Build with Gradle
uses: gradle/[email protected]
with:
arguments: build
7.2. Push CI/CD workflow
main
브런치로 Push 발생 시 gradle build
, 배포 실행
.github/workflows/gradle-push-cicd.yml
name: Gradle CI/CD
on:
push:
branches: [ "main" ]
permissions:
contents: read
# 각자 설정한 값으로 변경
env:
AWS_REGION: ap-northeast-2
S3_BUCKET_NAME: cicd-github-s3-bucket # 2.1. 단계
CODE_DEPLOY_APPLICATION_NAME: cicd-codedeploy-app # 3.2. 단계
CODE_DEPLOY_DEPLOYMENT_GROUP_NAME: cicd-codedeploy-deployment-group # 3.3. 단계
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 8
uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'temurin'
- name: Build with Gradle
uses: gradle/[email protected]
with:
arguments: build
# arguments: clean build -x test # Gradle test 제외하고 싶은 경우
# IAM 사용자 엑세스 키로 AWS 인증
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
aws-region: ${{ env.AWS_REGION }}
# 파일을 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 .
# CodeDeploy로 EC2 인스턴스에 S3의 파일을 배포
- 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