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
620
テストの高速化と品質保証の第一歩 GitHub ActionsとRSpecの基本入門
myamashii
1
570
Contributionとカンファレンス登壇への 背中を押して頂いた方々へ
myamashii
1
1.6k
GitHub ActionsでZennの記事を限定公開する
myamashii
3
870
Webサービス開発者としてスタートしてからOSS Contributionまでの道のり
myamashii
0
720
Fukuoka.rb 2020年度活動報告
myamashii
0
760
OSS Contributionから感じたこと
myamashii
0
360
手動テストやインフラ構築は自動化しよう
myamashii
0
17k
試行錯誤の勉強法
myamashii
1
4.8k
Other Decks in Programming
See All in Programming
SpringBoot3.4の構造化ログ #kanjava
irof
2
850
Java Webフレームワークの現状 / java web framework at burikaigi
kishida
9
2.1k
社内フレームワークとその依存性解決 / in-house framework and its dependency management
vvakame
1
520
Fixstars高速化コンテスト2024準優勝解法
eijirou
0
210
第3回 Snowflake 中部ユーザ会- dbt × Snowflake ハンズオン
hoto17296
4
240
Azure AI Foundryのご紹介
qt_luigi
1
270
Amazon ECS とマイクロサービスから考えるシステム構成
hiyanger
1
200
2,500万ユーザーを支えるSREチームの6年間のスクラムのカイゼン
honmarkhunt
6
4.6k
技術を根付かせる / How to make technology take root
kubode
1
110
『改訂新版 良いコード/悪いコードで学ぶ設計入門』活用方法−爆速でスキルアップする!効果的な学習アプローチ / effective-learning-of-good-code
minodriven
29
4.9k
Rubyでつくるパケットキャプチャツール
ydah
1
610
Package Traits
ikesyo
2
230
Featured
See All Featured
Building Adaptive Systems
keathley
39
2.4k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Fireside Chat
paigeccino
34
3.2k
How GitHub (no longer) Works
holman
313
140k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
113
50k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.4k
The Invisible Side of Design
smashingmag
299
50k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
3k
Faster Mobile Websites
deanohume
306
31k
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Λ༻ͯ͠ɺͯͳϒϩάͷهࣄ࡞ɺߋ৽ɺެ։ ΛࣗಈԽͨ͠ • ੍ݶࣄ߲͋Δͷͷɺ୯७Խ࡞ۀΛޮԽͰ͖ͨ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ