Update README.md #68
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build, Push to ECR, and Deploy via CodeDeploy | |
on: | |
push: | |
branches: | |
- dev | |
permissions: | |
id-token: write | |
contents: read | |
jobs: | |
deploy: | |
runs-on: ubuntu-latest | |
env: | |
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} | |
ECR_REPOSITORY_NAME: somparty | |
AWS_REGION: ap-northeast-2 | |
S3_BUCKET: ${{ secrets.S3_BUCKET_NAME }} | |
CODEDEPLOY_APP_NAME: ${{ secrets.CODEDEPLOY_APP_NAME }} | |
CODEDEPLOY_DEPLOYMENT_GROUP_NAME: ${{ secrets.CODEDEPLOY_DEPLOYMENT_GROUP_NAME }} | |
steps: | |
# 1. Java 17 설치 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v3 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
# 2. 깃허브 레포에서 코드 가져오기 | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
# 3. Gradle 빌드 | |
- name: Build Gradle | |
run: | | |
chmod +x ./gradlew | |
./gradlew build -x test | |
# 4. AWS IAM 역할로 GitHub Action에 AWS 접근 권한 부여 | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v2 | |
with: | |
role-to-assume: arn:aws:iam::${{ env.AWS_ACCOUNT_ID }}:role/${{ secrets.ACTION_ROLE_NAME }} | |
aws-region: ${{ env.AWS_REGION }} | |
# 5. Amazon ECR 로그인 | |
- name: Log in to Amazon ECR | |
run: | | |
aws ecr get-login-password --region ${{ env.AWS_REGION }} | docker login --username AWS --password-stdin ${{ env.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com | |
# 6. 도커 이미지 빌드 | |
- name: Build Docker Image | |
run: | | |
docker build -t ${{ env.ECR_REPOSITORY_NAME }}:latest . | |
docker tag ${{ env.ECR_REPOSITORY_NAME }}:latest ${{ env.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPOSITORY_NAME }}:latest | |
# 7. ECR로 빌드한 이미지 푸시 | |
- name: Push to Amazon ECR | |
run: | | |
docker push ${{ env.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPOSITORY_NAME }}:latest | |
# 8. CodeDeploy에 필요한 파일 압축 및 S3 업로드 | |
- name: Prepare and Upload Deployment Package | |
run: | | |
zip -r deploy.zip docker-compose.yml appspec.yml scripts/ | |
aws s3 cp deploy.zip s3://${{ env.S3_BUCKET }}/deploy.zip --region ${{ env.AWS_REGION }} | |
# 9. CodeDeploy로 배포 실행 | |
- name: Start CodeDeploy Deployment | |
run: | | |
aws deploy create-deployment \ | |
--application-name ${{ env.CODEDEPLOY_APP_NAME }} \ | |
--deployment-group-name ${{ env.CODEDEPLOY_DEPLOYMENT_GROUP_NAME }} \ | |
--s3-location bucket=${{ env.S3_BUCKET }},key=deploy.zip,bundleType=zip \ | |
--region ${{ env.AWS_REGION }} |