textlint と GitHub Actions でドキュメントの自動校正のCIを構築
2022-02-126 min read
目次
概要
GitHub で Markdownで管理しているブログに対して textlint で校正を行いレビューを自動化する CI を GitHub Actionsで構築しました。
具体的には次のようなワークフローを構築しています。
- ライターが markdown で記事を書き、プルリクを行う
- GitHub Actions スタート
- textlint で記事に対して校正を行う
- reviewdog でプルリクにミス内容を記載する
- 問題がなかったらオーナーはプルリク承認、終了。NGだったら以下に進む。
- ライターがミス内容を修正して再度push
- 再度、GitHub Actions スタート以下略...
利用する技術について
textlint
textlint/textlint: The pluggable natural language linter for text and markdown.
markdownで書いた文章について、表現の揺れや句読点、typoなどを機械的に抽出してくれるツールです。
GitHub Actionsについて
GitHubで利用できるCI/CDサービスです。
GitHubリポジトリの.github/workflows
ディレクトリ以下にワークフローを定義したファイルを配置しておくことでpushやプルリクをトリガーに定義したイベントを実行することができます。
reviewdog
プログラミング言語に依存しないコード分析と自動コードレビューが統合されたツールです。
ワークフローの実装
.github/workflows/textlint.yml
について次のように定義しました。
ワークフロー
name: textlint
on:
push:
branches:
- develop
pull_request:
branches:
- master
jobs:
textlint:
name: reviewdog
runs-on: ubuntu-latest
steps:
- uses: reviewdog/action-setup@v1
with:
reviewdog_version: latest
- uses: actions/setup-node@v2
- uses: actions/checkout@v2
- name: Install textlint
run: 'npm install --save-dev textlint textlint-rule-max-ten textlint-rule-spellcheck-tech-word textlint-rule-no-mix-dearu-desumasu'
# note: コンテンツが多すぎると exit code 1となる
- name: Exec textlint
run: |
npx textlint --rule no-mix-dearu-desumasu --rule max-ten --rule spellcheck-tech-word ./ 2>&1 | tee ./.textlint.log
# note: textlintで文章上のミスがあった場合のみ、reviewdogを実行
- name: Run reviewdog
if: failure()
env:
REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
cat .textlint.log | reviewdog -f=checkstyle -name="textlint" -reporter="github-pr-review"
説明
- ブランチ
develop への push、もしくは master へのプルリクのイベントの時にワークフローを実行する様にしています。
- textlintのセットアップ
- name: Install textlint
run: 'npm install --save-dev textlint textlint-rule-max-ten textlint-rule-spellcheck-tech-word textlint-rule-no-mix-dearu-desumasu'
でtextlintをセットアップしています。
ルールとして textlint-rule-max-ten
textlint-rule-spellcheck-tech-word
textlint-rule-no-mix-dearu-desumasu
を利用しています。
- textlintの実行
- name: Exec textlint
run: |
npx textlint --rule no-mix-dearu-desumasu --rule max-ten --rule spellcheck-tech-word ./ 2>&1 | tee ./.textlint.log
markdownファイルに対してtextlintで自動校正を行なっています。
- reviewdogの実行
- name: Run reviewdog
if: failure()
env:
REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
cat .textlint.log | reviewdog -f=checkstyle -name="textlint" -reporter="github-pr-review"
textlintでエラーがあった場合に、PRにレビューコメントを行います。
リンク
Recommends
New Posts
Hot posts!
Date
Tags
(110)
(54)
(54)
(47)
(45)
(36)
(30)
(29)
(24)
(24)
(22)
(21)
(21)
(20)
(19)
(17)
(16)
(16)
(15)
(14)
(12)
(12)
(12)
(12)
(12)
(12)
(11)
(10)
(10)
(10)
(10)
(10)
(9)
(9)
(8)
(8)
(8)
(8)
(7)
(7)
(6)
(6)
(6)
(6)
(6)
(5)
(5)
(5)
(5)
(4)
Author