Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
GitHub ActionsでZennブログの校正を自動化してみた
Search
YouYou
April 04, 2021
Technology
3.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GitHub ActionsでZennブログの校正を自動化してみた
詳細ブログ⇓
https://zenn.dev/yuta28/articles/blog-lint-ci-reviewdog
YouYou
April 04, 2021
More Decks by YouYou
See All by YouYou
AWSマネコンに複数のアカウントで入れるようになりました
yuhta28
2
320
今インフラ技術をイチから学び直すなら
yuhta28
1
320
AWSに詳しくない人でも始められるコスト最適化ガイド
yuhta28
3
700
Datadog外形監視基盤をEC2から ECSへ移行してみた
yuhta28
0
1.9k
アウトプット頑張ったら企業からLT登壇の依頼がきた話
yuhta28
1
1.9k
小さなことから始めるAWSコスト最適入門
yuhta28
1
1.5k
Datadogのコストも監視しよう
yuhta28
1
1.1k
Rcloneを使った定期的なストレージ同期
yuhta28
0
890
Pulumiを触ってみよう
yuhta28
1
2.8k
Other Decks in Technology
See All in Technology
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
830
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
770
コンテナ運用におけるネットワーク・コンテナコストの削減方法/How to Reduce Network and Container Costs in Container Operations
masakiokuda
2
300
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
7
5.1k
PagerDuty Tech Hub-鳴らすけれど、人は動かない
ezaki
0
180
価値について
gree_tech
PRO
0
100
Temporal 最高!でも改めて「日付」について調べたら人類の負債すぎる件
riyaamemiya
0
180
サブエージェントと Claude Mods で作る独自 Advisor ツールの話
kenichiodo
2
170
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
1k
パスキーの自動テストはどこまでいけるのか
teamlab
PRO
0
280
hackers_champloo_2026_tidb
makocchi
0
170
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
930
Featured
See All Featured
How to Talk to Developers About Accessibility
jct
2
580
Between Models and Reality
mayunak
4
500
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
500
Designing Powerful Visuals for Engaging Learning
tmiket
1
610
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
First, design no harm
axbom
PRO
2
1.3k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Are puppies a ranking factor?
jonoalderson
2
4.1k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Transcript
GitHub Actionsで ブログの校正を自動化してみた
Name:ユータ Occupation:インフラエンジニア Twitter:@Y0u281 (オーでなくゼロです) ブログ:https://zenn.dev/yuta28 → 普段触るもの:AWS Ansible Linux Mint
自己紹介 Twitter
目次 • 背景 • 技術スタック紹介 ◦ textlint ◦ reviewdog •
実装 • 工夫ポイント • まとめ
背景 • ZennブログをGitHub連携することができるようになった☆ ◦ Zenn個人開発の限界に挑んだ話 - devsumi 2021 詳しくは開発者のプレゼン 👀 •
CIツールを導入する事で自動化が可能に👏 ◦ リポジトリを更新する度にドキュメントの校正 ◦ イイ感じのブログ執筆
textlint • mdファイルやプレーンテキスト向けのLinterツール • npm install textlint `textlint-rurle` → ルールもインストール •
デフォルトルールが存在せず、自分でルールを決めなければならない • .textlintrc にルールを記述 https://textlint.github.io/
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オープン社内報
reviewdog • GitHubにlinterツールで検知した指摘事項をレビューコメントに投稿 • Goで書かれたOSS • Circle CIやGitHub Actionsなど複数のCIサービスと連携可能 https://github.com/reviewdog/reviewdog
実装 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にレビューコメントを投稿
デモ イメージ図
工夫ポイント • キャッシュを使って高速化 ◦ 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-
工夫ポイント • キャッシュ前(初回実行) 50秒 • キャッシュ取得後(2回目以降) 29秒
まとめ
ありがとうございました より詳しい内容は以下のブログで ↓ GitHub ActionsでZennブログの校 正を自動化してみた