4차산업혁명의 일꾼/Java&Spring웹개발과 서버 컴퓨터

CD : GitHub Actions을 이용한 AWS ECR에 배포자동화(CD:Contiuous Development)

르무엘 2023. 12. 11. 21:49

GitHub Actions, AWS Elastic Container Registry(ECR)를 이용한 배포 자동화 (youtube.com)

 

위 영상을 참고하여 아래 github workflow CI기본 지식을 바탕으로

CI공부 : Github workflow(깃헙 워크플로우) (tistory.com)

 

CI공부 : Github workflow(깃헙 워크플로우)

깃헙에서 CI(Continuous Integration)을 하려면 .gitub 폴더 뒤에 workflows를 우선 만들어야 한다. 그 다음에 Actions 탭에가서 New workflow 버튼을 누른다. 필자는 Java with Gradle로 workflow를 만들예정이다. 해당 Con

iamipro.tistory.com

 

workflows 폴더에 depoly.yml 파일로 하기 배포라인을 작성하였다.

name: Create and publish a Docker image to AWS ECR, Deploy to Cloudtype

on:
  push:
    branches:
      - master

env:
  REGISTRY: ${{ secrets.AWS_ECR_REGISTRY }}
  IMAGE_NAME: test

jobs:
  build-and-push-image:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Log in to the Container registry
        uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
        with:
          registry: ${{ env.REGISTRY }}
          username: ${{ secrets.AWS_ACCESS_KEY_ID }}
          password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

      - name: Extract metadata (tags, labels) for Docker
        id: meta
        uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
        with:
          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
          tags: |
            type=sha
      - name: Build and push Docker image
        uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
        with:
          context: .
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}

      - name: Deploy to Cloudtype
        uses: cloudtype-github-actions/deploy@v1
        with:
          token: ${{ secrets.CLOUDTYPE_TOKEN }}
          project: iamipro/pharm
          stage: main
          yaml: |
            name: pharmacy-app
            app: container
            options:
              ports: 8080
              image: ${{ steps.meta.outputs.tags }}

영상에도 나와 있지만

위의 보안을 위한 secrets 키는 

깃헙의 Settings탭에 가서

Secrets and variables - Actions에 가서

설정을 해둘수 있다.

 

위 영상을 따라 확인해보니 배포작업이 모두 잘 작동되었다.

 

AWS의 ECR에 가보면 private repository에 

test 리포지토리를 만들었는데

아래와 같이 이미지가 잘 들어감을 알 수 있다.

 

LIST