프로젝트 레포지토리에 액션 기능을 사용해 보자.
적용할 Action은 총 2가지로, ChatGPT를 사용한 코드리뷰봇과, CI(테스트 자동화) 기능이다.
먼저 코드리뷰 봇은 코드리뷰봇 깃허브를 사용할 예정이다. 한국어로 번역이 되어 있어서 쉽게 적용이 가능하다.
OPENAI_API_KEY
를 설정 => Actions secrets and variables => Actions에 키 값을 넣어준다..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가 코드 리뷰를 해 준다.
다음으로 테스트 자동화다.
아래 내용을 붙여 넣어주면 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을 시험해 보려다가 이것 때문에 몇 시간을 날렸다.