✅
GitHub Actionsでpre-commitを使う際に特定のhooksをスキップさせる
lintやtypo検知などをpre-commitで行っており、かつGitHub Actionsでもpre-commit/actionを使ってチェックしていたところ、素直に使うだけだと全てのhooksが走ってしまい、ローカルでのみ実行したいhookがあったり、jobを分割したりするのに困った。
pre-commit.ciというのを使うと.pre-commit-config.yaml
にスキップの設定などを書けて嬉しいらしいが、「特定のhooksをスキップさせる」ためだけに使うには高機能すぎるし、GitHub Appのインストールが必要なのも悩ましい。
だが、#configuration-skipの項目をよく見ると「this is equivalent to running SKIP=pylint pre-commit ...」という記述がある。
そういえばそんな環境変数あったな... と思って以下のようにした。
- name: pre-commit
uses: pre-commit/action@v3.0.0
env:
SKIP: foo
これでfooというIDのhookはスキップされるようになる。複数ある場合はfoo,bar
のように繋げれば良い。
とりあえずはこれで解決だが、hookのIDが.pre-commit-config.yaml
を超えてWorkflowのyamlにも飛んで行くのが気持ち悪かったり、ログにデカデカとSkippedと表示されたり、若干モヤモヤする。本当なら自分でactionを書いた方がいいのかもしれない。
Discussion