github 자동배포 (CI/CD)

유주성·2023년 8월 7일
0
post-thumbnail

배포를 하는것은 시간이 오래걸리는 작업이다. 자동으로 배포되게 하면 조금더 자주 배포를 실행할 수 있다.

파일 생성

배포를 윈하는 파일의 최상단에 .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

필요한 부분들을 고처가며 사용하면 좋겠다.(코드 이해자체는 어렵지 않은듯..)

commit

이상태로 커밋을 하면 자동으로 배포가 된다.

0개의 댓글