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で自動化する
Search
M-Yamashita
November 02, 2022
Programming
1.4k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
はてなブログ作成から投稿までをGitHub Actionsで自動化する
【LT満員御礼!】自動化大好きエンジニアLT会 - vol.9の登壇資料です。
https://rakus.connpass.com/event/259685/
M-Yamashita
November 02, 2022
More Decks by M-Yamashita
See All by M-Yamashita
ツールを超えた「共通言語」へ 開発とSREがDatadogを囲んで信頼を育てる 継続的かつ地道な実践
myamashii
0
480
アクセスピークを制するオートスケール再設計: 障害を乗り越えKEDAで実現したリソース管理の最適化
myamashii
3
4k
継続的な活動で築く地方エンジニアの道
myamashii
2
780
テストの高速化と品質保証の第一歩 GitHub ActionsとRSpecの基本入門
myamashii
1
750
Contributionとカンファレンス登壇への 背中を押して頂いた方々へ
myamashii
1
2.1k
GitHub ActionsでZennの記事を限定公開する
myamashii
3
1.1k
Webサービス開発者としてスタートしてからOSS Contributionまでの道のり
myamashii
0
890
Fukuoka.rb 2020年度活動報告
myamashii
0
900
OSS Contributionから感じたこと
myamashii
0
530
Other Decks in Programming
See All in Programming
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
220
[DroidKnights 2026] Workflow AX: From Auto-Documented Policies to E2E Testing
raeminkang
0
240
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
1
240
AI駆動開発4年目の現在地(『あなたはFDEになるべきか?』イベント資料)
kumaiu
0
110
Performance Optimization With LLMs
xleitix
0
230
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
6.1k
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
350
Vapor Mode でアクセシビリティは 壊れないか検証した話
fuqda
1
300
ActionController meets Protocol Buffers
sorah
1
770
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.2k
Event is what happens
moro
2
2.6k
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.1k
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
4k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
330
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
600
KATA
mclloyd
PRO
35
16k
GitHub's CSS Performance
jonrohan
1033
470k
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
620
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
460
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
660
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
350
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Λ༻ͯ͠ɺͯͳϒϩάͷهࣄ࡞ɺߋ৽ɺެ։ ΛࣗಈԽͨ͠ • ੍ݶࣄ߲͋Δͷͷɺ୯७Խ࡞ۀΛޮԽͰ͖ͨ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ