Github Actionsでtextlintを使って校正処理をする


やりたいこと

Zennの記事を書いているリポジトリで記事追加用のブランチにプッシュしたらmainブランチへのプルリクエストを作成する。
mainブランチへのプルリクエストが作成されたらtextlintを実行して記事を校正する。

参考記事

こちらの記事を大いに参考にさせていただきました。

https://zenn.dev/kshida/articles/auto-generate-release-pr-with-github-actions

プルリクエストの自動作成

ブランチ名 article/** だったらプルリクを作成します。
プルリクのタイトルはブランチ名として、既にプルリクが存在している場合には作成されないようにします。

pullrequest.yaml
name: pullrequest

on:
  push:
    branches:
      - "article/**"

jobs:
  create-review-pr:
    runs-on: ubuntu-latest
    env:
      GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    steps:
      - uses: actions/checkout@v2
      - name: check PR exists
        id: pr_exists
        run: |
          pr_title=${GITHUB_REF##*/}
          echo "::set-output name=pr_title::$pr_title"
          echo "::set-output name=count::$(gh pr list -S ${pr_title}' in:title' -B $base_branch | wc -l)"

      - name: Create release pr
        if: ${{ steps.pr_exists.outputs.count == 0 }}
        run: |
          gh pr create -B main -t ${{ steps.pr_exists.outputs.pr_title }} -b ""

textlintのワークフロー

textlintを実行してエラーがあったらreviewdogでプルリクにコメントが追加されるという挙動になります。

textlint.yaml
jobs:
  textlint:
    name: reviewdog
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true

      - name: textlint-github-pr-review
        uses: tsuyoshicho/action-textlint@v3
        with:
          github_token: ${{ secrets.github_token }}
          reporter: github-pr-review
          textlint_flags: "articles/**"

作業中にこちらを見つけたので利用してみました。

https://github.com/tsuyoshicho/action-textlint

参考記事

https://zenn.dev/serima/articles/4dac7baf0b9377b0b58b

textlintのルール設定

ひとまず適用することにしたルールは以下です。
ここは様子を見て更新していきます。

.textlintrc
{
    "rules": {
        "textlint-rule-no-mix-dearu-desumasu": true,
        "textlint-rule-max-ten": true,
        "textlint-rule-spellcheck-tech-word": true,
        "preset-ja-technical-writing": true
    }
}

https://github.com/textlint-ja/textlint-rule-no-mix-dearu-desumasu

https://github.com/textlint-ja/textlint-rule-max-ten

https://github.com/azu/textlint-rule-spellcheck-tech-word

https://github.com/textlint-ja/textlint-rule-preset-ja-technical-writing

終わりに

以上でこの記事のlintがうまくいきました。
もう少し校正内容のブラッシュアップは必要な気がしていますので今後の課題とします。

課題

Github Actionsでプルリクエストを自動作成した時にレビューのジョブが動かないのをどうにかしたいです。
当面は8割完成くらいの状態で記事を一度プッシュしてしまい全体を見直し改めてプッシュした段階で校正がかかればいいという運用をします。

追記

Github Actionsで作成したプルリクだと校正のジョブが動かない件は以下の記事を参考にPersonal Access Tokenを使用するように変更したら動くようになりました。

https://qiita.com/yanamura/items/e283e5bd070c3204fdd5