Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
はてなブログ作成から投稿までをGitHub Actionsで自動化する
Search
M-Yamashita
November 02, 2022
Programming
3
1.2k
はてなブログ作成から投稿までをGitHub Actionsで自動化する
【LT満員御礼!】自動化大好きエンジニアLT会 - vol.9の登壇資料です。
https://rakus.connpass.com/event/259685/
M-Yamashita
November 02, 2022
Tweet
Share
More Decks by M-Yamashita
See All by M-Yamashita
継続的な活動で築く地方エンジニアの道
myamashii
2
630
テストの高速化と品質保証の第一歩 GitHub ActionsとRSpecの基本入門
myamashii
1
570
Contributionとカンファレンス登壇への 背中を押して頂いた方々へ
myamashii
1
1.6k
GitHub ActionsでZennの記事を限定公開する
myamashii
3
880
Webサービス開発者としてスタートしてからOSS Contributionまでの道のり
myamashii
0
720
Fukuoka.rb 2020年度活動報告
myamashii
0
770
OSS Contributionから感じたこと
myamashii
0
360
手動テストやインフラ構築は自動化しよう
myamashii
0
17k
試行錯誤の勉強法
myamashii
1
4.8k
Other Decks in Programming
See All in Programming
『GO』アプリ バックエンドサーバのコスト削減
mot_techtalk
0
150
『テスト書いた方が開発が早いじゃん』を解き明かす #phpcon_nagoya
o0h
PRO
6
2.2k
Djangoにおける複数ユーザー種別認証の設計アプローチ@DjangoCongress JP 2025
delhi09
PRO
4
410
コミュニティ駆動 AWS CDK ライブラリ「Open Constructs Library」 / community-cdk-library
gotok365
2
220
バッチを作らなきゃとなったときに考えること
irof
2
480
CloudNativePGを布教したい
nnaka2992
0
100
データの整合性を保つ非同期処理アーキテクチャパターン / Async Architecture Patterns
mokuo
53
18k
プログラミング言語学習のススメ / why-do-i-learn-programming-language
yashi8484
0
150
もう少しテストを書きたいんじゃ〜 #phpstudy
o0h
PRO
2
120
Introduction to kotlinx.rpc
arawn
0
750
Conform を推す - Advocating for Conform
mizoguchicoji
3
710
仕様変更に耐えるための"今の"DRY原則を考える
mkmk884
9
2.9k
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
693
190k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.5k
Visualization
eitanlees
146
15k
Typedesign – Prime Four
hannesfritz
40
2.5k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.2k
Documentation Writing (for coders)
carmenintech
67
4.6k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Rails Girls Zürich Keynote
gr2m
94
13k
Site-Speed That Sticks
csswizardry
4
400
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Transcript
2022-11-02 ࣗಈԽେ͖ΤϯδχΞLTձ - vol.9 ͯͳϒϩά࡞͔Βߘ·ͰΛ GitHub ActionsͰࣗಈԽ͢Δ M-Yamashita
• ࢁԼ խਓ • όοΫΤϯυΤϯδχΞ • ॴଐ: גࣜձࣾΞΠΩϡʔϒυγεςϜζ • GitHub
Actions ͕͖ • GitHub: @M-Yamashita01 • Twitter: @M_Yamashii ࣗݾհ
• ຖ݄ͷৼΓฦΓΛͯͳϒϩάʹࣥචத എܠ
ϒϩά࡞ͷաఔͰຖճൃੜ͢Δ୯७࡞ۀ
ੵΔετϨε
• ৽نߘ࣌ɺաڈͷϒϩάͷ߲Λίϐϖͯ͠৽͘͠จষΛهࡌ • VSCode্ͰจষΛtextlintͰνΣοΫ͠ɺͯͳϒϩάʹసه • VSCodeͱͯͳϒϩάͷߦ͖དྷ͕ਏ͍ ࠔͬͨ͜ͱ
Ͳ͏ͳͬͨΒخ͍͠ʁ
Ͳ͏ͳͬͨΒخ͍͠ʁ • จষΛॻ͘πʔϧVSCode͚ͩʹ͍ͨ͠ • ͯͳϒϩάΛ৮ΒͣʹVSCodeͱGitHubͰԼॻ͖͔Βެ։·Ͱ͍݁ͤͨ͞ • ։ൃͱಉ͡Α͏ʹGitHub্ͷϒϥϯν࡞Pull RequestͰͯͳϒϩάͷ ࡞ɺߋ৽Λ͍ͨ͠
ԿΛΈ߹ΘͤΔ͔ʁ
GitHubͷΠϕϯττϦΨʔʹ GitHub Actions͕૬ੑ͕ྑ͍
ͯͳϒϩάͷૢ࡞
ͯͳϒϩάAtomPub https://developer.hatena.ne.jp/ja/documents/blog/apis/atom
ͯͳϒϩάAtomPub ϒϩάͷࢀরɺ࡞ɺެ։ɺআΛ REST APIͰՄೳ
͜ͷREST APIΛ͏OSSͳ͍͔ʁ
blogsync
• ͯͳBlog༻ͷCLIΫϥΠΞϯτ blogsync https://github.com/x-motemen/blogsync
͑ͦ͏ʂ
ϫʔΫϑϩʔΛ࡞ΔͨΊʹ blogsyncͷ༷Λཧղ͢Δ
ཧղ͢Δ༷ ϒϩάͷϑΥʔϚοτɺߘํ๏ɺߋ৽ํ๏ͷ3ͭ
ϒϩάͷϑΥʔϚοτ
blogsyncͷ༷ʢϒϩάͷϑΥʔϚοτʣ
ϒϩάͷߘํ๏
blogsyncͷ༷ʢϒϩάͷߘʣ
blogsyncͷ༷ʢϒϩάͷߘʣ
• ΤϯτϦߘඪ४ೖྗ͔Βड͚औΕΔ • Լॻ͖ͷςϯϓϨʔτΛdraft.mdͱ͓ͯ͘͜͠ͱͰɺҎԼίϚϯυͰ؆୯ʹϒ ϩάΛ࡞Ͱ͖Δ • $ blogsync post --draft
xxx.hatenablog.com < draft.md blogsyncͷ༷ʢϒϩάͷߘʣ
• blogsync post ίϚϯυΛ࣮ߦ͢ΔͱɺҎԼϑΝΠϧύεʹԼॻ͖ϒϩά͕ ग़དྷ্͕Δ • project_root/xxx.hatenablog.com/entry/yyyy/mm/dd/hhmmss.md • ྫɿ2022/01/02 03:04:05ʹίϚϯυΛ࣮ߦͨ͠߹ͷϒϩάͷϑΝΠϧύε
• project_root/xxx.hatenablog.com/entry/2022/01/02/030405.md blogsyncͷ༷ʢϒϩάͷߘʣ
ϒϩάͷߋ৽ํ๏
blogsyncͷ༷ʢϒϩάͷߋ৽ʣ
• PushίϚϯυͰͯͳϒϩάͷԼॻ͖Λߋ৽Ͱ͖Δ • ͨͩ͠ߋ৽ޙͷهࣄجຊతʹ৽͘͠࡞͞Εͯ͠·͏ blogsyncͷ༷ʢϒϩάͷߋ৽ʣ
Ͳ͏͍͏͜ͱʁ
• ϒϩάͷϑΝΠϧύε • project_root/xxx.hatenablog.com/entry/2022/01/02/030405.md • ͜ͷϒϩάΛฤू͠ɺཌblogsync push͢Δͱɺಉ͡༰Λ࣋ͭ৽͍͠ϒϩ ά͕ग़དྷ্͕Δ • project_root/xxx.hatenablog.com/entry/2022/01/02/030405.md
• project_root/xxx.hatenablog.com/entry/2022/01/03/040506.md blogsyncͷ༷ʢϒϩάͷߋ৽ʣ
ϫʔΫϑϩʔΛ࡞Δ্Ͱ ͓͖ͬͯ͘blogsyncͷ༷͜͜·Ͱ
ϫʔΫϑϩʔΛ࡞Δ
ϫʔΫϑϩʔ • ࠔͬͨ͜ͱཧܗΛݩʹɺҎԼ3ͭͷϫʔΫϑϩʔΛ࡞ • ϒϥϯν࡞࣌ʹͯͳϒϩάͷԼॻ͖Λ࡞ • Pull Request࣌ʹͯͳϒϩά্ͷԼॻ͖Λߋ৽ • ϥϕϧઃఆ࣌ʹϒϩάΛެ։
ͯͳϒϩάͷԼॻ͖࡞ ϫʔΫϑϩʔ
ͯͳϒϩάͷԼॻ͖࡞ ϫʔΫϑϩʔ 1.Create branch 2.Event trigger 3. Create blog 4.
Get blog 5. Commit blog GitHub Actions
ͯͳϒϩάͷԼॻ͖࡞ ϫʔΫϑϩʔ
ͯͳϒϩάͷԼॻ͖࡞ ϫʔΫϑϩʔ
ͯͳϒϩάͷԼॻ͖࡞ ϫʔΫϑϩʔ
ͯͳϒϩάͷԼॻ͖࡞ ϫʔΫϑϩʔ
ͯͳϒϩάͷԼॻ͖࡞ ϫʔΫϑϩʔ
ͯͳϒϩάͷԼॻ͖࡞ ϫʔΫϑϩʔ
ͯͳϒϩάͷԼॻ͖ߋ৽ ϫʔΫϑϩʔ
ͯͳϒϩάͷԼॻ͖ߋ৽ ϫʔΫϑϩʔ 1.Push blog 2.Pull Request 3. Update blog GitHub
Actions
ͯͳϒϩάͷԼॻ͖ߋ৽ ϫʔΫϑϩʔ
ͯͳϒϩάͷԼॻ͖ߋ৽ ϫʔΫϑϩʔ
ͯͳϒϩάͷԼॻ͖ߋ৽ ϫʔΫϑϩʔ
ͯͳϒϩάͷԼॻ͖ߋ৽ ϫʔΫϑϩʔ
৽نϒϩά͕࡞͞ΕΔ͕ ίϛοτ͠ͳ͍ ͯͳϒϩάͷԼॻ͖ߋ৽ ϫʔΫϑϩʔ
৽نϒϩά͕࡞͞ΕΔ͕ ίϛοτ͠ͳ͍ ͯͳϒϩάͷԼॻ͖ߋ৽ ϫʔΫϑϩʔ →ࣥචऀ͕ಉ͡ϑΝΠϧύ εͷϒϩάͰฤू͠ଓ͚Β ΕΔΑ͏ʹ͢ΔͨΊ
ͯͳϒϩάͷެ։ ϫʔΫϑϩʔ
ͯͳϒϩάͷެ։ ϫʔΫϑϩʔ 3. Update blog 1.Approve label 2.Event trigger 4.
Get blog 5.Replace and Commit blog GitHub Actions
ͯͳϒϩάͷެ։ ϫʔΫϑϩʔ
ͯͳϒϩάͷެ։ ϫʔΫϑϩʔ
ͯͳϒϩάͷެ։ ϫʔΫϑϩʔ
ͯͳϒϩάͷެ։ ϫʔΫϑϩʔ
ͯͳϒϩάͷެ։ ϫʔΫϑϩʔ
ͯͳϒϩάͷެ։ ϫʔΫϑϩʔ
ͯͳϒϩάͷެ։ ϫʔΫϑϩʔ ɾgitͷཤྺΛอ࣋Ͱ͖Δ ɾϒϩάެ։ͱGitHub্ ͷϒϩάͷ࣌ͷϑΝΠϧ ύε͕Ұக͢Δ
ͯͳϒϩάͷެ։ ϫʔΫϑϩʔ
੍ݶࣄ߲ • GitHub্ͷԼॻ͖ϒϩάʹΞοϓϩʔυͨ͠ը૾Λɺͯͳϒϩάެ։Ͱ ͖ͳ͍ • ͯͳϒϩά্Ͱฤूͨ͠߹ɺGitHub্ͷϒϩάͱϚοϐϯάͰ͖ͳ ͍
·ͱΊ • GitHub ActionsͱblogsyncΛ༻ͯ͠ɺͯͳϒϩάͷهࣄ࡞ɺߋ৽ɺެ։ ΛࣗಈԽͨ͠ • ੍ݶࣄ߲͋Δͷͷɺ୯७Խ࡞ۀΛޮԽͰ͖ͨ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ