textlint と GitHub Actions でドキュメントの自動校正のCIを構築

textlint と GitHub Actions でドキュメントの自動校正のCIを構築

2022-02-126 min read

目次

  1. 概要
  2. 利用する技術について
  3. ワークフローの実装
  4. リンク

概要

GitHub で Markdownで管理しているブログに対して textlint で校正を行いレビューを自動化する CI を GitHub Actionsで構築しました。

具体的には次のようなワークフローを構築しています。

  1. ライターが markdown で記事を書き、プルリクを行う
  2. GitHub Actions スタート
  3. textlint で記事に対して校正を行う
  4. reviewdog でプルリクにミス内容を記載する
  5. 問題がなかったらオーナーはプルリク承認、終了。NGだったら以下に進む。
  6. ライターがミス内容を修正して再度push
  7. 再度、GitHub Actions スタート以下略...

利用する技術について

textlint

textlint/textlint: The pluggable natural language linter for text and markdown.

markdownで書いた文章について、表現の揺れや句読点、typoなどを機械的に抽出してくれるツールです。

GitHub Actionsについて

Actions | GitHub

GitHubで利用できるCI/CDサービスです。

GitHubリポジトリの.github/workflowsディレクトリ以下にワークフローを定義したファイルを配置しておくことでpushやプルリクをトリガーに定義したイベントを実行することができます。

reviewdog

reviewdog/reviewdog: 🐶 Automated code review tool integrated with any code analysis tools regardless of programming language

プログラミング言語に依存しないコード分析と自動コードレビューが統合されたツールです。

ワークフローの実装

.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にレビューコメントを行います。

リンク

Tags
javascript(103)
linux(54)
amazon%20aws(47)
node.js(43)
%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0(36)
typescript(33)
%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86(30)
html5(29)
php(24)
centos(24)
python(22)
%E7%AB%B6%E6%8A%80%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0(21)
mac(21)
mysql(19)
canvas(18)
opencv(17)
%E9%9B%91%E8%AB%87(16)
docker(16)
wordpress(15)
atcoder(14)
apache(12)
%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92(12)
%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9(12)
amazon%20s3(12)
red%20hat(12)
ubuntu(11)
github(10)
git(10)
vue.js(10)
%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86100%E6%9C%AC%E3%83%8E%E3%83%83%E3%82%AF(10)
mariadb(10)
aws%20cdk(9)
css3(8)
%E5%8F%AF%E8%A6%96%E5%8C%96(8)
%E5%B0%8F%E3%83%8D%E3%82%BF(8)
amazon%20lightsail(7)
react(7)
%E3%83%96%E3%83%AD%E3%82%B0(6)
cms(6)
oracle(6)
perl(6)
gitlab(6)
next.js(6)
prisma(6)
iam(5)
amazon%20ec2(5)
%E8%B3%87%E6%A0%BC%E8%A9%A6%E9%A8%93(5)
aws%20amplify(5)
nestjs(5)
curl(4)
Author
githubzennqiita
ただの備忘録です。※このブログの内容は個人の見解であり、所属する組織等の見解ではないです。