Search

git workflow를 통한 자동배포

개요

우리 팀은 현재 gitflow에 따라 develop - qa - release 브랜치를 메인으로 사용하고 있다. 모든 브랜치는 workflow_dispatcher를 통해 git action을 수동 트리거하는 방법을 쓰고 있는데 push, pull request할 때도 자동으로 배포되도록 하는 니즈가 필요하여 아래와 같이 적용하였다.

workflows/aws-dev.yml

develop 브랜치가 push되거나 pull request할 때 배포되도록 설정
name: Deploy to Amazon ECS (Batch 개발) on: push: branches: [develop] pull_request: branches: [develop] workflow_dispatch: env: {{환경변수}} permissions: contents: read jobs: deploy: name: Deploy runs-on: ubuntu-latest environment: staging steps: - name: Checkout uses: actions/checkout@v3 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ env.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: ${{ steps.login-ecr.outputs.registry }} IMAGE_TAG: ${{ github.sha }} run: | - 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: ${{ env.ECS_TASK_DEFINITION }} container-name: ${{ env.CONTAINER_NAME }} image: ${{ steps.build-image.outputs.image }} - name: Deploy Amazon ECS task definition uses: aws-actions/amazon-ecs-deploy-task-definition@v1 with: task-definition: ${{ steps.task-def.outputs.task-definition }} service: ${{ env.ECS_SERVICE }} cluster: ${{ env.ECS_CLUSTER }} wait-for-service-stability: true
YAML
복사

workflows

개발 배치서버와 API서버가 잘 작동하는 것을 확인하였다