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/[email protected] - 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 エラーが発生している場合は、こんな風にプルリクに対してエラー内容がコメントされます。