【LT満員御礼!】自動化大好きエンジニアLT会 - vol.9の登壇資料です。 https://rakus.connpass.com/event/259685/
2022-11-02 ࣗಈԽେ͖ΤϯδχΞLTձ - vol.9ͯͳϒϩά࡞͔Βߘ·ͰΛGitHub ActionsͰࣗಈԽ͢ΔM-Yamashita
View Slide
• ࢁԼ խਓ• όοΫΤϯυΤϯδχΞ• ॴଐ: גࣜձࣾΞΠΩϡʔϒυγεςϜζ• GitHub Actions ͕͖• GitHub: @M-Yamashita01• Twitter: @M_Yamashiiࣗݾհ
• ຖ݄ͷৼΓฦΓΛͯͳϒϩάʹࣥචதഎܠ
ϒϩά࡞ͷաఔͰຖճൃੜ͢Δ୯७࡞ۀ
ੵΔετϨε
• ৽نߘ࣌ɺաڈͷϒϩάͷ߲Λίϐϖͯ͠৽͘͠จষΛهࡌ• VSCode্ͰจষΛtextlintͰνΣοΫ͠ɺͯͳϒϩάʹసه• VSCodeͱͯͳϒϩάͷߦ͖དྷ͕ਏ͍ࠔͬͨ͜ͱ
Ͳ͏ͳͬͨΒخ͍͠ʁ
Ͳ͏ͳͬͨΒخ͍͠ʁ• จষΛॻ͘πʔϧVSCode͚ͩʹ͍ͨ͠• ͯͳϒϩάΛ৮ΒͣʹVSCodeͱGitHubͰԼॻ͖͔Βެ։·Ͱ͍݁ͤͨ͞• ։ൃͱಉ͡Α͏ʹGitHub্ͷϒϥϯν࡞Pull RequestͰͯͳϒϩάͷ ࡞ɺߋ৽Λ͍ͨ͠
ԿΛΈ߹ΘͤΔ͔ʁ
GitHubͷΠϕϯττϦΨʔʹGitHub Actions͕૬ੑ͕ྑ͍
ͯͳϒϩάͷૢ࡞
ͯͳϒϩάAtomPubhttps://developer.hatena.ne.jp/ja/documents/blog/apis/atom
ͯͳϒϩάAtomPubϒϩάͷࢀরɺ࡞ɺެ։ɺআΛREST APIͰՄೳ
͜ͷREST APIΛ͏OSSͳ͍͔ʁ
blogsync
• ͯͳBlog༻ͷCLIΫϥΠΞϯτblogsynchttps://github.com/x-motemen/blogsync
͑ͦ͏ʂ
ϫʔΫϑϩʔΛ࡞ΔͨΊʹblogsyncͷ༷Λཧղ͢Δ
ཧղ͢Δ༷ϒϩάͷϑΥʔϚοτɺߘํ๏ɺߋ৽ํ๏ͷ3ͭ
ϒϩάͷϑΥʔϚοτ
blogsyncͷ༷ʢϒϩάͷϑΥʔϚοτʣ
ϒϩάͷߘํ๏
blogsyncͷ༷ʢϒϩάͷߘʣ
• ΤϯτϦߘඪ४ೖྗ͔Βड͚औΕΔ• Լॻ͖ͷςϯϓϨʔτΛdraft.mdͱ͓ͯ͘͜͠ͱͰɺҎԼίϚϯυͰ؆୯ʹϒϩάΛ࡞Ͱ͖Δ• $ blogsync post --draft xxx.hatenablog.com < draft.mdblogsyncͷ༷ʢϒϩάͷߘʣ
• 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.mdblogsyncͷ༷ʢϒϩάͷߘʣ
ϒϩάͷߋ৽ํ๏
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.mdblogsyncͷ༷ʢϒϩάͷߋ৽ʣ
ϫʔΫϑϩʔΛ࡞Δ্Ͱ͓͖ͬͯ͘blogsyncͷ༷͜͜·Ͱ
ϫʔΫϑϩʔΛ࡞Δ
ϫʔΫϑϩʔ• ࠔͬͨ͜ͱཧܗΛݩʹɺҎԼ3ͭͷϫʔΫϑϩʔΛ࡞• ϒϥϯν࡞࣌ʹͯͳϒϩάͷԼॻ͖Λ࡞• Pull Request࣌ʹͯͳϒϩά্ͷԼॻ͖Λߋ৽• ϥϕϧઃఆ࣌ʹϒϩάΛެ։
ͯͳϒϩάͷԼॻ͖࡞ ϫʔΫϑϩʔ
ͯͳϒϩάͷԼॻ͖࡞ ϫʔΫϑϩʔ1.Create branch 2.Event trigger 3. Create blog4. Get blog5. Commit blogGitHubActions
ͯͳϒϩάͷԼॻ͖ߋ৽ ϫʔΫϑϩʔ
ͯͳϒϩάͷԼॻ͖ߋ৽ ϫʔΫϑϩʔ1.Push blog 2.Pull Request 3. Update blogGitHubActions
৽نϒϩά͕࡞͞ΕΔ͕ίϛοτ͠ͳ͍ͯͳϒϩάͷԼॻ͖ߋ৽ ϫʔΫϑϩʔ
৽نϒϩά͕࡞͞ΕΔ͕ίϛοτ͠ͳ͍ͯͳϒϩάͷԼॻ͖ߋ৽ ϫʔΫϑϩʔ→ࣥචऀ͕ಉ͡ϑΝΠϧύεͷϒϩάͰฤू͠ଓ͚ΒΕΔΑ͏ʹ͢ΔͨΊ
ͯͳϒϩάͷެ։ ϫʔΫϑϩʔ
ͯͳϒϩάͷެ։ ϫʔΫϑϩʔ3. Update blog1.Approve label 2.Event trigger4. Get blog5.Replace andCommit blogGitHubActions
ͯͳϒϩάͷެ։ ϫʔΫϑϩʔɾgitͷཤྺΛอ࣋Ͱ͖Δɾϒϩάެ։ͱGitHub্ͷϒϩάͷ࣌ͷϑΝΠϧύε͕Ұக͢Δ
੍ݶࣄ߲• GitHub্ͷԼॻ͖ϒϩάʹΞοϓϩʔυͨ͠ը૾Λɺͯͳϒϩάެ։Ͱ͖ͳ͍• ͯͳϒϩά্Ͱฤूͨ͠߹ɺGitHub্ͷϒϩάͱϚοϐϯάͰ͖ͳ͍
·ͱΊ• GitHub ActionsͱblogsyncΛ༻ͯ͠ɺͯͳϒϩάͷهࣄ࡞ɺߋ৽ɺެ։ΛࣗಈԽͨ͠• ੍ݶࣄ߲͋Δͷͷɺ୯७Խ࡞ۀΛޮԽͰ͖ͨ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ