배포를 하는것은 시간이 오래걸리는 작업이다. 자동으로 배포되게 하면 조금더 자주 배포를 실행할 수 있다.
배포를 윈하는 파일의 최상단에 .github 폴더를 만들고, 거기에 workflows에 원하는 yml파일을 만들면 된다.
배포하려는 방법이 AWS인 경우 AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY를 직접(혼자 만드는 경우) 혹은 받아와야(내가 배포의 주체가 아닌 경우) 하는데,직접 하는 경우 AWS의 IAM으로 들어가 하면 된다고 한다. 사실 잘 모르겠다. 나는 공식문서를 보고 대충 따라해보았다. 받는경우 그냥 받아서 사용하면 된다.
배포하고자 하는 리포지토리의 settings -> secrets and variables -> actions로 들어가면 키를 입력해주는 곳이 나오는데, 새로 만들기를 누르고 받아온 혹은 만든 키값을 입력해 만들어준다. 공개키와 비밀키 둘다 입력해야한다.
예시로 주어진 코드를 작성하면 된다.
# .github/workflows/client.yml
name: client
on:
push:
branches:
- <?>
jobs:
build:
runs-on: ubuntu-20.04
steps:
- name: Checkout source code.
uses: actions/checkout@v2
- name: Install dependencies
run: <?>
working-directory: ./my-agora-states-client-react
- name: Build
run: <?>
working-directory: ./my-agora-states-client-react
- name: SHOW AWS CLI VERSION
run: |
<?>
- 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 <?> \
--region ap-northeast-2 \
build s3://<?> \
--delete
working-directory: <?>
빈칸을 작성하면 이렇게 되는데
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-react
- name: Build
run: npm run build
working-directory: ./my-agora-states-client-react
- 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-72-juseong-yu-s3 \
--delete
working-directory: ./my-agora-states-client-react
필요한 부분들을 고처가며 사용하면 좋겠다.(코드 이해자체는 어렵지 않은듯..)
이상태로 커밋을 하면 자동으로 배포가 된다.