目次
概要
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にレビューコメントを行います。
リンク
おすすめの記事
最新の記事
よく読まれている記事
タグから探す
- javascript130
- typescript67
- linux54
- node.js54
- amazon-aws48
- 画像処理48
- アルゴリズム37
- canvas35
- html529
- 画像処理100本ノック27
- php24
- centos24
- python22
- 競技プログラミング21
- mac21
- mysql20
- opencv17
- 雑談16
- 機械学習16
- docker16
- wordpress15
- atcoder14
- apache12
- データベース12
- amazon-s312
- red-hat12
- prisma12
- ubuntu11
- github10
- git10
- react10
- mariadb10
- vue.js9
- next.js9
- aws-cdk9
- css38
- 可視化8
- 小ネタ8
- nestjs8
- amazon-lightsail7
- ブログ6
- cms6
- oracle6
- perl6
- gitlab6
- iam5
- amazon-ec25
- 資格試験5
- aws-amplify5
- curl4