GitHub Actions + reviewdogでtextlintを実行する
この記事では、文章校正ツールであるtextlintのチェックでエラーになったときの結果を、GitHubのPull Requestへコメントする設定について説明します。 textlintはGitHub Actionsを使って実行し、reviewdogを使ってPull Requestへコメントします。
reviewdogはGitHub Actionsで使えるDockerベースのPublic reviewdog actionsを公開しています。
しかしtextlint用のactionsはないので、この記事ではワークフローの定義ファイルを自作します。
動作を確認した環境
- GitHub Actions β版(YAML Syntax)
- reviewdog v0.9.13
- textlint v11.4.0
GitHub Actionsのワークフローの作成
GitHub Actionsを設定するリポジトリを準備します。
GitHub Actionsのワークフローの定義ファイルは
.github/workflows
の下に置きます。この記事では、ワークフローの定義ファイルはreviewdog.yml
としました。mkdir -p .github/workflows touch .github/workflows/reviewdog.yml
.github/workflows/reviewdog.yml
のファイルの内容には、以下を記述します。name: 'Run textlint with reviewdog' on: [pull_request] jobs: textlint: runs-on: Ubuntu-latest container: image: node:current-alpine env: LEVEL: error FLAGS: src/ steps: - uses: actions/checkout@v1 - name: setup-reviewdog run: | mkdir -p $HOME/bin && wget -O - -q https://raw.githubusercontent.com/reviewdog/reviewdog/master/install.sh \ | sh -s -- -b /usr/local/bin/ v0.9.13 apk --update add git && \ rm -rf /var/lib/apt/lists/* - name: installl-textlint run: | cd "$GITHUB_WORKSPACE" if [ ! -f "$(npm bin)/textlint" ]; then npm install fi - name: run-reviewdog env: REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | $(npm bin)/textlint -f checkstyle "${FLAGS:-'.'}" \ | reviewdog -f=checkstyle -name="textlint" -diff="git diff ${{ github.event.pull_request.base.ref }}" -reporter=github-pr-review -level="${LEVEL}"
LEVEL
はreviewdogのエラーレベルを設定します。info
、warning
、error
を指定できます。FLAGS
はtextlintをかけたいMarkdownファイルがあるディレクトリを指定します。${{ secrets.GITHUB_TOKEN }}
と記述すると、GitHub側が自動でGitHubトークンを作成します。このトークンは${{ secrets.GITHUB_TOKEN }}
を使ったステップでのみ参照されます。
textlintの設定
textlintのルールプリセットはpreset-ja-technical-writingを使っています。
利用するnpmパッケージを
package.json
に追加します。npm init -y npm install -D textlint textlint-rule-preset-ja-technical-writing
.textlintrc
を作成し、次の内容を追記します。{ "plugins": { "@textlint/markdown": { "extensions": [".md"] } }, "rules": { "preset-ja-technical-writing": true } }
GitHubへの反映
作成したファイル群を定義ファイルをリモートにプッシュします。
git add .
git commit -m "Added: reviewdog workflow"
git push origin master
動作確認
わざとlintエラーになるファイルを作成し、別ブランチにpushしてプルリクを作ってみます。
example
ブランチを作成し、src/example.md
としてエラーになるファイルを作ります。git checkout -b example mkdir src touch src/example.md
src/example.md
の内容はこんな感じです。# Example これはサンプルです。 `src` ディレクトリ以下に textlint を実行したい Markdown ファイルを置きます。 このディレクトリは `.github/workflows/reviewdog.yml` の `FLAGS` で変更することができます。
リモートにpushします。
git add src/example.md git commit -m "Added: error sample file" git push origin example
GitHub.comの画面を開きます。
master
ブランチに対して、example
をマージするプルリクを作成します。[Actions]タブを開きます。プルリクを作成すると、Actionsの実行ログを確認できます。
lintエラーが発生している場合は、こんな風にプルリクに対してエラー内容がコメントされます。