GitHub ActionsでZennブログの校正を自動化してみた

1.5K Views

April 10, 21

スライド概要

詳細ブログ⇓
https://zenn.dev/yuta28/articles/blog-lint-ci-reviewdog

profile-image

フィンテック企業でインフラ運用改善を担当しているSREです。 ブログでまとめたLTスライドをアップロードします。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

GitHub Actionsで ブログの校正を自動化してみた

2.

自己紹介 Name:ユータ Occupation:インフラエンジニア Twitter:@Y0u281 (オーでなくゼロです) ブログ:https://zenn.dev/yuta28 → 普段触るもの:AWS Ansible Linux Mint Twitter

3.

目次 ● 背景 ● 技術スタック紹介 ○ textlint ○ reviewdog ● 実装 ● 工夫ポイント ● まとめ

4.

背景 ● ZennブログをGitHub連携することができるようになった☆ ○ ● Zenn個人開発の限界に挑んだ話 - devsumi 2021 詳しくは開発者のプレゼン 👀 CIツールを導入する事で自動化が可能に👏 ○ リポジトリを更新する度にドキュメントの校正 ○ イイ感じのブログ執筆

5.

textlint ● mdファイルやプレーンテキスト向けのLinterツール ● ● ● npm install textlint `textlint-rurle` → ルールもインストール デフォルトルールが存在せず、自分でルールを決めなければならない .textlintrc にルールを記述 https://textlint.github.io/

6.
[beta]
textlint # .textlintrc { "rules": { "preset-smarthr": { "sentence-length": false }, "prh": { "rulePaths": [ "dict/smarthr-prh-basic.yml", "dict/smarthr-prh-tech-word.yml" ] } } } ルール ● ● textlint-rule-preset-smarthr textlint-rule-prh 参照 よりよい文書を書くための校正ツール「 textlint」の SmartHR用ルールプリセットを公開しました! |SmartHRオープン社内報
7.

reviewdog ● GitHubにlinterツールで検知した指摘事項をレビューコメントに投稿 ● ● Goで書かれたOSS Circle CIやGitHub Actionsなど複数のCIサービスと連携可能 https://github.com/reviewdog/reviewdog

8.
[beta]
実装 jobs: reviewdog-github-check: name: reviewdog (github-check) runs-on: ubuntu-latest steps: #reviewdogのアクション - uses: reviewdog/action-setup@v1 with: reviewdog_version: latest #textlintを動かすためのnodeアクション - uses: actions/setup-node@v2 - name: Install textlint run: 'npm install --save-dev textlint-rule-preset-smarthr textlint-rule-prh' - name: Install dependent module run: npm install - name: Execute textlint for ブログ記事 run: | npx textlint -f checkstyle "articles/*.md" >> .textlint.log - name: Run reviewdog # textlintで文章上のミスがあった場合のみ、 reviewdogを実行させるようにする if: failure() env: REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | cat .textlint.log | reviewdog -f=checkstyle -name="textlint" -reporter="github-pr-review" 1) reviewdog,nodeのアクションを起動 2) textlintのインストール 3) textlintを記事に対して実行 4) 何かしらの記載ミスが有った場合のみtextlintの出力結果を reviewdogに渡してGitHubにレビューコメントを投稿
9.

デモ イメージ図

10.

工夫ポイント ● キャッシュを使って高速化 ○ ● GitHub Actionの公式にactions/cache stepが失敗するとキャッシュしてくれない ● stepが終了してもキャッシュしてくれるアク ションを使う https://github.com/pat-s/always-upload-c ache #stepsが失敗(文章の乱れ)した場合でもcacheを取得するようにする uses: pat-s/[email protected] env: cache-name: cache-node-modules with: path: ~/.npm key: node-${{ hashFiles('**/package-lock.json') }} restore-keys: | node-

11.

工夫ポイント ● キャッシュ前(初回実行) 50秒 ● キャッシュ取得後(2回目以降) 29秒

12.

まとめ

13.

ありがとうございました より詳しい内容は以下のブログで ↓ GitHub ActionsでZennブログの校 正を自動化してみた