🀄
コードを自動修正して、pushしてくれるGitHub Actions
問題
複数人で開発していると、ある人がコミットしたコードにおいて、整形されていなかったり、文法不備が発生する事象が起きる。
解決策
文法チェック(Lint)して、フォーマッターかけて、プッシュしてくれるCIを作った。
特定人のローカル環境でLintCheckやFormatterにヌケモレがあっても大丈夫。
ミソは、botのgitアカウントを設定して、もし変更すべきコードがない場合はgit pushしない所。
botによって、変更されたコードをpullし忘れて作業するとコンフリクト起きる可能性がある。
なので、各個人のエディタがVSCode統一できるなら.vscodeに設定入れておくでもよいかも。
huskyという選択肢もあるが、初回セットアップ作業が発生し、コミットの都度、実行されるのが若干時間を要してダルい勢がいたりする。
name: Lint,Format,Test
on:
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- uses: actions/cache@v4
id: node_modules_cache_id
env:
cache-name: cache-node-modules
with:
path: '**/node_modules'
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
- run: echo '${{ toJSON(steps.node_modules_cache_id.outputs) }}'
- if: ${{ steps.node_modules_cache_id.outputs.cache-hit != 'true' }}
run: npm ci
- run: npm ls --depth=0
- name: lint-fix
run: npm run lintfix
- name: Push changes if existing modified files
id: push-changes
run: |
git config --global user.email "bot@example.com"
git config --global user.name "bot"
git remote set-url origin https://x-access-token:${{secrets.GITHUB_TOKEN}}@github.com/${{github.repository}}
git diff --quiet --exit-code || git commit -am "Automated changes"
if [ $? -eq 0 ]; then
echo "No changes to commit"
else
git push
fi
- name: Test
run: npm test
Discussion