ECS Fargate + GitHub Action 자동 배포
ECS Fargate + GitHub Action 자동 배포
ECS
- 태스크 정의 json 파일 다운로드
GitHub Action
GitHub Action에서 ‘Deploy to Amazon ECS’ workflow 선택
Settings의 Secrets and variables에서 AWS_ACCESS_KEY_ID와 AWS_SECRET_ACCESS_KEY를 Repository secrets에 등록
.github/workflows/aws.yml 파일을 아래 코드로 수정
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
name: Deploy to Amazon ECS on: push: branches: [ "develop-deploy" ] env: AWS_REGION: ap-northeast-2 ECR_REPOSITORY: githubsalt-ecr ECS_SERVICE: githubsalt-backend ECS_CLUSTER: githubsalt-ecs ECS_TASK_DEFINITION: githubsalt-backend-revision2.json CONTAINER_NAME: githubsalt-container jobs: deploy: name: Deploy runs-on: ubuntu-latest environment: production steps: - name: Checkout uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'adopt' - name: Grant execute permission for gradlew run: chmod +x gradlew - name: build with gradle run: ./gradlew clean build -x test - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: $ aws-secret-access-key: $ aws-region: $ - name: Login to Amazon ECR id: login-ecr uses: aws-actions/amazon-ecr-login@v1 - name: Build, tag, and push image to Amazon ECR id: build-image env: ECR_REGISTRY: $ IMAGE_TAG: $ run: | docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT - name: Fill in the new image ID in the Amazon ECS task definition id: task-def uses: aws-actions/amazon-ecs-render-task-definition@v1 with: task-definition: $ container-name: $ image: $ - name: Deploy Amazon ECS task definition uses: aws-actions/amazon-ecs-deploy-task-definition@v1 with: task-definition: $ service: $ cluster: $ wait-for-service-stability: true
커밋 후 workflow가 작동하는 것을 확인
ECS
This post is licensed under CC BY 4.0 by the author.