pre-commitの出力をreviewdogでGitHubのPullRequestにAnnotationする
以前、以下のエントリで実施したことと同等のことですが、
reviewdogを使った方が楽にできそうなので、試したメモです。
pre-commitの出力に対してProblem Matchersを適用して、GitHubのPullRequestにAnnotationする
https://takemikami.com/2024/1215-precommit-github-problemmatcher.html
reviewdog | GitHub
https://github.com/reviewdog/reviewdog
以下ファイルを作成して、GitHubにcommit/PullRequest作成で、
GitHubのUIにAnnotationが表示されることが確認できると思います。
main.py
import sys
def main():
pass
pyproject.toml
[tool.flake8]
exclude = [".venv"]
.pre-commit-config.yaml
repos:
- repo: https://github.com/csachs/pyproject-flake8
rev: v7.0.0
hooks:
- id: pyproject-flake8
log_file: /tmp/pre-commit-log-pyproject-flake8
.github/workflows/ci.yaml
name: CI
on: pull_request
jobs:
pre-commit-run:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: reviewdog/action-setup@e04ffabe3898a0af8d0fb1af00c188831c4b5893
- uses: pre-commit/action@v3.0.1
- name: reviewdog
env:
REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: always()
run: |
cat /tmp/pre-commit-log-pyproject-flake8 \
| sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" \
| reviewdog -f=flake8 -reporter=github-pr-annotations
元エントリと違う部分は、.github/workflows/ci.yaml
で、
自前で定義したProblemMatchersでなく、reviewdogを使っている部分です。
だいぶスッキリとしたので、楽に導入できそうですね。
エスケープカラーシーケンスの除き方は、以下を参考にさせて頂きました。
ありがとうございます。
逆引きUNIXコマンド/エスケープカラーシーケンスをテキストから除く方法
https://linux.just4fun.biz/?%E9%80%86%E5%BC%95%E3%81%8DUNIX%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/%E3%82%A8%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%97%E3%82%AB%E3%83%A9%E3%83%BC%E3%82%B7%E3%83%BC%E3%82%B1%E3%83%B3%E3%82%B9%E3%82%92%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%8B%E3%82%89%E9%99%A4%E3%81%8F%E6%96%B9%E6%B3%95
以上。