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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
M-Yamashita
November 02, 2022
Programming
1.3k
3
Share
はてなブログ作成から投稿までを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
300
アクセスピークを制するオートスケール再設計: 障害を乗り越えKEDAで実現したリソース管理の最適化
myamashii
3
3.2k
継続的な活動で築く地方エンジニアの道
myamashii
2
740
テストの高速化と品質保証の第一歩 GitHub ActionsとRSpecの基本入門
myamashii
1
690
Contributionとカンファレンス登壇への 背中を押して頂いた方々へ
myamashii
1
2k
GitHub ActionsでZennの記事を限定公開する
myamashii
3
1k
Webサービス開発者としてスタートしてからOSS Contributionまでの道のり
myamashii
0
840
Fukuoka.rb 2020年度活動報告
myamashii
0
850
OSS Contributionから感じたこと
myamashii
0
470
Other Decks in Programming
See All in Programming
KagglerがMixSeekを触ってみた
morim
0
370
飯MCP
yusukebe
0
490
ファインチューニングせずメインコンペを解く方法
pokutuna
0
280
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
3
510
存在論的プログラミング: 時間と存在を記述する
koriym
5
850
PCOVから学ぶコードカバレッジ #phpcon_odawara
o0h
PRO
0
250
Oxlintとeslint-plugin-react-hooks 明日から始められそう?
t6adev
0
110
安いハードウェアでVulkan
fadis
1
940
我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜 #phperkaigi / PHPerKaigi 2026
shogogg
2
890
Symfonyの特性(設計思想)を手軽に活かす特性(trait)
ickx
0
130
へんな働き方
yusukebe
6
2.9k
おれのAgentic Coding 2026/03
tsukasagr
1
140
Featured
See All Featured
Leo the Paperboy
mayatellez
7
1.6k
Become a Pro
speakerdeck
PRO
31
5.9k
Google's AI Overviews - The New Search
badams
0
960
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.6k
Done Done
chrislema
186
16k
KATA
mclloyd
PRO
35
15k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
810
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
120
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
160
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Exploring anti-patterns in Rails
aemeredith
3
310
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Λ༻ͯ͠ɺͯͳϒϩάͷهࣄ࡞ɺߋ৽ɺެ։ ΛࣗಈԽͨ͠ • ੍ݶࣄ߲͋Δͷͷɺ୯७Խ࡞ۀΛޮԽͰ͖ͨ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ