Github Action을 사용하여 배포 자동화 하기

Kim-DaHam·2023년 6월 5일
0

Server

목록 보기
9/10
post-thumbnail

🔥 학습목표

  • Github Action을 사용하여 개발 워크플로우를 자동화 한다.
  • YAML 파일을 작성하여 클라이언트 파일을 자동 배포한다.



🟩 Github Actions

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

  • Pull Requestpush 같은 이벤트를 트리거로 Github 작업 워크플로우를 구성할 수 있다.

  • 워크플로우는 .yml(.yaml) 파일에 의해 구성된다.

  • 테스트, 배포 등 기능에 따라 여러 개의 워크플로우도 만들 수 있다.

  • 워크플로우는 ./github/workflows 디렉토리 이하에 위치한다.



🟣 배포 자동화 실습

⬜ 배포 레포지토리 생성

※ 권한을 public 으로 만들어야 무료로 사용 가능하다.

https://github.com/Kim-DaHam/github-action-practice


⬜ AWS key 등록하기

전달 받은 AWS 비밀키/공개키를 깃헙 Secrets에 등록한다.


⬜ 배포 할 프로젝트에 .yml 파일 작성하기

./.github/workflows 경로에 client.yml파일을 생성한다.

yml 파일은 크게 이렇게 분류한다.

on: # 언제 job을 작동 시킬지

jobs: # 어떤 job을 할지

작성해본 yml 파일은 다음과 같다.

# .github/workflows/client.yml
name: client # 액션 이름

on: # 언제 job을 발동할 것인가?
  push: # push 이벤트가 일어났을 때
    branches: # 어떤 브랜치에서?
      - reference # reference 브랜치에서
      
jobs: # 어떤 job을 실행할 것인가?
  build: # 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-react
        
        # 빌드
      - name: Build
        run: npm run build
        working-directory: my-agora-states-client-react
        
        # AWS S3 버전 확인
      - name: SHOW AWS CLI VERSION
        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 sync \
            --region ap-northeast-2 \
            build s3://fe-12-kim-daham-s3 \
            --delete
        working-directory: my-agora-states-client-react



버킷을 연결하는 run 명령어를 뜯어보면 다음과 같이 해석할 수 있다.

run: |
	aws s3 sync \
    --region ap-northeast-2 \
    build s3://fe-12-kim-daham-s3 \
    --delete
  • sync - 디렉토리에서 새로운 파일/업데이트 된 파일만 복사하여 업로드 한다.
    (🎁 sync와 cp의 차이점)

  • --region ap-northeast-2 - 리전(서울)

  • build s3://(빌드 할 버킷 이름)

  • --delete - 대상 폴더의 파일 삭제를 지원한다. 업로드 했을 때 이전과 달리 삭제된 파일이 있다면, 버킷에도 이를 적용하여 파일을 삭제한다.


⬜ 업로드 하기

yml 파일을 다 작성했다면 push 후 Actions를 확인한다.

나는 경로를 자꾸만 잘못 적어서 9번이나 다시 실행했다 ^^; 게다가 ACCESS_KEY를 action에 등록할 때, yml 파일에 적은 키 값과 동일하게 잘 맞춰 적었는지 확인해야 한다.

AWS에 들어가서 확인해보면 내가 push 한 시각과 비슷한 때에 업데이트 된 걸 볼 수 있다!



profile
다 하자

0개의 댓글