Backend/공통

Github Action을 통한 AWS CI/CD (2)

Dean83 2025. 11. 11. 14:38

https://dean83.tistory.com/369 에 이어서, AWS ECR 에 배포 까지만 하는 명령어의 예 이다. 

도커를 사용한다는 전제하에 기본적인 과정을 한번 살펴 보자. 

  • 체크아웃 (현재 트리거된 브랜치 선택)
  • 도커 빌드 
  • 도커 이미지:태그명 변경
  • AWS 로그인을 위한 인증정보 생성
  • 도커에서 AWS 인증정보를 통한 로그인
  • ECR에 업로드

 

아래는 위의 과정을 수행한 예 이다. (자동 수행이 아닌 수동 수행으로 예시를 만들었음 - workflow-dispatch)

도커 이미지:태그명 변경을 하기 전에 해당 문자열이 길고 복잡하므로, echo 명령어 등을 통해 환경변수에 넣어둔다.

그 후, 실제 도커 이미지 변경시, 저장된 환경변수 값을 이용하여 변경한다.

name: Deploy Springboot App
on:
  workflow_dispatch:
#  push:
#    branches:
#      - main
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name : Checkout code
        #github 에 있는 모듈 사용. 체크아웃을 맨 처음에 넣어주는게 좋다.
        uses: actions/checkout@v5

      - name: build docker
        run: docker build -t 이미지명:태그명 .

      - name: to change tag, save envs
        run: |
          echo "ECR_REG=${{secrets.AWS_ACCOUNT_ID}}.dkr.ecr.${{secrets.AWS_REGION}}.amazonaws.com/" >> $GITHUB_ENV
          echo "ECR_REPO=${{secrets.AWS_REPO_NAME}}" >> $GITHUB_ENV
          echo "IMAGE_TAG=$(date+'%Y%m%d%H%M%S')-${GITHUB_SHA::8}" >> $GITHUB_ENV

      - name: change tag from env
        run: |
          docker tag 이미지명:태그명 ${{env.ECR_REG}}${{env.ECR_REPO}}:${{env.IMAGE_TAG}}
          docker tag 이미지명:태그명 ${{env.ECR_REG}}${{env.ECR_REPO}}:latest

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v5.1.0
        with:
          #gitgub settings 에서 미리 입력한 secret 값들을 이용
          aws-access-key-id: ${{ secrets.AWS_DEPLOY_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_DEPLOY_SECRET_KEY }}
          aws-region: ${{ secrets.AWS_REGION }}

      - name : docker login
        id : login-ecr
        uses : aws-actions/amazon-ecr-login@v2

      - name : push
        run: |
          docker push ${{env.ECR_REG}}${{env.ECR_REPO}}:${{env.IMAGE_TAG}}
          docker push ${{env.ECR_REG}}${{env.ECR_REPO}}:latest