GitHub action 사용해 보기

no-pla·2024년 3월 16일
0

TIL

목록 보기
7/14
post-thumbnail
post-custom-banner

프로젝트 레포지토리에 액션 기능을 사용해 보자.

적용할 Action은 총 2가지로, ChatGPT를 사용한 코드리뷰봇과, CI(테스트 자동화) 기능이다.

코드리뷰봇

먼저 코드리뷰 봇은 코드리뷰봇 깃허브를 사용할 예정이다. 한국어로 번역이 되어 있어서 쉽게 적용이 가능하다.

  1. 먼저 OPENAI_API_KEY를 설정 => Actions secrets and variables => Actions에 키 값을 넣어준다.
  2. .github/workflows/cr.yml 를 생성하고, 아래의 내용을 추가해 준다.
    GITHUB_TOKEN은 자동으로 추가되므로 신경쓸 필요 없다.
name: Code Review

permissions:
  contents: read
  pull-requests: write

on:
  pull_request:
    types: [opened, reopened, synchronize]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: anc95/ChatGPT-CodeReview@main
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          # optional
          LANGUAGE: Korean
          PROMPT:

위 봇을 추가해 주면, pull request가 새롭게 열리거나, 다시 열리거나, 동기화되었을 때 다시 실행되면서 리뷰를 남겨준다.

실험용 레포지토리를 삭제하여, 메일로 온 것을 첨부했지만, pull request가 될 때마다 ChatGPT가 코드 리뷰를 해 준다.

CI

다음으로 테스트 자동화다.

  1. Actions에서 new workflow를 선택한다.

아래 내용을 붙여 넣어주면 push나 pull request를 진행할 때마다 테스트를 실행한다.

name: CI Test

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - name: Use Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "20.x"
      - run: npm ci
      - run: npm run build --if-present
      - run: npm test

테스트를 통과해야만 merge를 진행하게 하기 위해서, 설정 창에서 Branch 규칙을 설정하는 곳에서 Require status checks to pass before merging를 활성화해 준다. 이 규칙을 설정하면, 모든 테스트가 통과하기 전까지는 merge를 막아준다.

+) 간단한 트러블 슈팅

만약 Next.js를 with-jest를 이용해 시작했다면, package.json에서 test가 test: jest --watch로 되어있기 때문에 제대로 작동하지 않는다. (당연함) 그러므로test: jest --watch에서 --watch를 삭제해 주어야 한다.

다른 레포를 만들어서 이 Action을 시험해 보려다가 이것 때문에 몇 시간을 날렸다.

post-custom-banner

0개의 댓글