🔥 학습목표
- Github Action을 사용하여 개발 워크플로우를 자동화 한다.
- YAML 파일을 작성하여 클라이언트 파일을 자동 배포한다.
Github가 공식적으로 제공하는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼
Pull Request
나 push
같은 이벤트를 트리거로 Github 작업 워크플로우를 구성할 수 있다.
워크플로우는 .yml
(.yaml
) 파일에 의해 구성된다.
테스트, 배포 등 기능에 따라 여러 개의 워크플로우도 만들 수 있다.
워크플로우는 ./github/workflows
디렉토리 이하에 위치한다.
※ 권한을 public 으로 만들어야 무료로 사용 가능하다.
https://github.com/Kim-DaHam/github-action-practice
전달 받은 AWS 비밀키/공개키를 깃헙 Secrets에 등록한다.
./.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 한 시각과 비슷한 때에 업데이트 된 걸 볼 수 있다!