Skip to content

Merge branch 'dev' of https://github.com/SomSomParty/SomSomParty_BE i… #59

Merge branch 'dev' of https://github.com/SomSomParty/SomSomParty_BE i…

Merge branch 'dev' of https://github.com/SomSomParty/SomSomParty_BE i… #59

Workflow file for this run

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 }}