Git Action 으로 배포 자동화

e-pong:)·2022년 12월 19일
0

Github Action

GitHub Actions는 Github가 공식적으로 제공하는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼.

CI/CD를 포함하여 원하는 작업을 수행하기 위한 작업을 검색, 생성 및 공유하고 완전히 사용자 정의된 워크플로에서 작업을 결합할 수 있다.

레포지토리에서 Pull Request 나 push 같은 이벤트를 트리거로 GitHub 작업 워크플로(Workflow)를 구성할 수 있다. 워크플로우는 하나 이상의 작업이 실행되는 자동화 프로세스로, 각 작업은 자체 가상 머신 또는 컨테이너 내부에서 실행된다.

워크플로우는 .yml (혹은 .yaml ) 파일에 의해 구성되며, 테스트, 배포 등 기능에 따라 여러개의 워크플로우도 만들 수 있습니다. 생성된 워크플로는 .github/workflows 디렉토리 이하에 위치한다.

비공개 레포지토리의 경우 Github Actions가 작동할 때의 용량과 시간이 제한되어있으며 공개 레포지토리는 무료로 사용 가능하다.

YAML 이란?

Yet Another Markup Language의 약자로, 사람이 읽을 수 있는 데이터 직렬화 언어를 의미한다.

YAML은 사람이 읽을 수 있고 이해하기 쉬워 프로그래밍 언어 중에서도 인기가 높다. 또한 다른 프로그래밍 언어와 함께 사용할 수도 있다.

YAML은 그 유연성과 접근성으로 인해 자동화 프로세스를 생성하는 데에도 사용된다.

Github Actions를 통한 배포 Flow (클라이언트)

클라이언트 배포는 간단하게 3가지 단계로 나뉜다.

  • Source: Github reference 브랜치에 코드가 커밋되면
  • Build: github acitons의 YAML 파일에 적힌 명령어를 토대로 Webpack을 이용해 빌드를 하고
  • Deploy: github acitons의 YAML 파일에 적힌 명령어를 토대로 s3로 빌드 결과를 업로드한다.
# .github/workflows/client.yml
name: client
on:
  push:
    branches:
      - reference
jobs:
  build:
    runs-on: ubuntu-20.04
    steps:
      - name: Checkout source code.
        uses: actions/checkout@v2
      - name: Install dependencies
        run: npm install
        working-directory: ./my-agora-states-client
      - name: Build
        run: npm run build
        working-directory: ./my-agora-states-client
      - name: SHOW AWS CLI VERSION
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_EC2_METADATA_DISABLED: true
        run: |
          aws --version
      - name: Sync Bucket
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_EC2_METADATA_DISABLED: true
        run: |
         aws s3://client-s3-bucket-name/ ./ \
            --region ap-northeast-2 \
            build s3://client-s3-bucket-name \
            --delete
       working-directory: ./my-agora-states-client

S3가 배포 준비가 되었을 때 s3로 파일만 잘 전달하면 충분히 배포 할 수 있다.

참고자료 : https://inpa.tistory.com/entry/AWS-CLI-📚-S3-CLI-명령어-종류-💯-총정리

✍️ 주의해야 할 사항

AWS ACCESS KEY와 AWS SECRET KEY 이 두 개의 key는 절대로 하드코딩 및 외부 노출이 일어나면 안 되는 key들이다.

참고자료 : https://dnight.tistory.com/entry/GitHub-Actions-환경변수-등록-방법

profile
말에 힘이 있는 사람이 되기 위해 하루하루, 성장합니다.

0개의 댓글