オートスケールする GitHub Actions セルフホストランナーを構築した話

8.8K Views

November 25, 22

スライド概要

※2021/08/28 に slideshare にアップロードしていた資料の再アップロード版です

https://event.ospn.jp/odc2021-online/
『Open Developers Conference 2021 Online 』の発表資料です。
オートスケールする GitHub Actions セルフホストランナーを構築&運用した知見をまとめました。

profile-image

Productivity Engineer at cybozu. GitHub Actions User Group Tokyo Organizer. GitHub Stars. 『GitHub Actions 実践入門』を BOOTH で販売中です。 http://miyajan.booth.pm/items/1865906

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Φʔτεέʔϧ͢Δ(JU)VC"DUJPOT ηϧϑϗετϥϯφʔΛߏஙͨ͠࿩  0QFO%FWFMPQFST$POGFSFODF0OMJOF ‫ాٶ‬३ฏ !NJZBKBO

2.

ࣗ‫঺ݾ‬հ  ‫ాٶ‬३ฏ !NJZBKBO   αΠϘ΢ζੜ࢈ੑ޲্νʔϜ

3.

എ‫ܠ‬

4.

αΠϘ΢ζͷ։ൃ‫ج‬൫  ΦϯϓϨͱΫϥ΢υ͕ࠞࡏ  ࣾ಺ωοτϫʔΫ͔Β͔͠ΞΫηεͰ͖ͳ͍γεςϜ͕͋Δ

5.

ΦϯϓϨ Ϋϥ΢υ GitHub Enterprise Server GitHub Enterprise Cloud Jenkins, CircleCI Server CircleCI Cloud ࣾ಺͔Β͔͠ ΞΫηεͰ͖ͳ͍γεςϜ AWS, GCP ͳͲ

6.

(JU)VC"DUJPOT࢖͍͍ͨ  (JU)VC͕ఏ‫͢ڙ‬Δ$*$%αʔϏε  (JU)VC಺Ͱ‫ͯ݁͠׬‬ϫʔΫϑϩʔΛ૊ΊΔ

7.

՝୊  ΦϯϓϨʹґଘ͢Δ։ൃͰ(JU)VC"DUJPOT͕ར༻Ͱ͖ͳ͍  (JU)VC͕ఏ‫͢ڙ‬Δϥϯφʔ্͔Β͸ ΦϯϓϨωοτϫʔΫʹΞΫηεͰ͖ͳ͍ͷͰ ࣾ಺γεςϜ (JU)VC"DUJPOT ࣾ಺։ൃωοτϫʔΫ HJUIVCDPN

8.

ηϧϑϗετϥϯφʔ  (JU)VC"DUJPOTͰఏ‫͞ڙ‬Ε͍ͯΔ‫ػ‬ೳ  ϓϥΠϕʔτωοτϫʔΫ಺ʹࣗલͰϥϯφʔΛߏஙՄೳ ࣾ಺γεςϜ ηϧϑϗετϥϯφʔ ࣾ಺։ൃωοτϫʔΫ (JU)VC"DUJPOT HJUIVCDPN

9.

ࣾ಺ωοτϫʔΫࣄ৘  "84ͱࣾ಺։ൃωοτϫʔΫΛ71/઀ଓͯ͠Δ  ͜͜ͰηϧϑϗετϥϯφʔΛߏங͢Δ 71/ ࣾ಺γεςϜ ࣾ಺։ൃωοτϫʔΫ 5SBOTJU(BUFXBZ "84 1SJWBUF71$

10.

͚ͩͲʜ  ϥϯφʔͷ਺͕૿͑Δͱ؅ཧ͕େมʹͳΓͦ͏😥  ؅ཧΛͰ͖Δ͚ͩࣗಈԽ͍ͨ͠  ྉ͕ۚߴ͘ͳΓͦ͏💰  ࢖ΘΕ͍ͯͳ͍ϥϯφʔ͸ࣗಈͰ࡟আ͞Εͯ΄͍͠  ϥϯφʔ͕଍Γͳ͍ͱϏϧυ଴͕ͪ࣌ؒൃੜͦ͠͏😩  ඞཁͳ਺ͷϥϯφʔ͸ࣗಈͰ‫ى‬ಈͯ͠΄͍͠

11.

࣮‫ͱ͍ͨ͜͠ݱ‬  ϫʔΫϑϩʔͷ࣮ߦʹ߹ΘͤͯΦʔτεέʔϧ͢Δ ηϧϑϗετϥϯφʔϓʔϧ

12.

΍ͬͨ͜ͱ

13.

"84Ͱͷ࣮‫ํݱ‬๏ IUUQTHJUIVCDPNQIJMJQTMBCTUFSSBGPSNBXTHJUIVCSVOOFS

14.

࢓૊Έ  (JU)VC"QQΛ࡞੒ͯ͠Πϯετʔϧ  δϣϒ࣮ߦ࣌ʹXFCIPPL‫ܦ‬༝ͰϥϯφʔΛ‫ى‬ಈ  ఆ‫ظ‬తʹ࢖ΘΕ͍ͯͳ͍ϥϯφʔΛ࡟আ XFCIPPL (JU)VC ‫ى‬ಈ "1*(BUFXBZ  -BNCEB ࡟আ &$ ఆ‫ߦ࣮ظ‬ -BNCEB $MPVE8BUDI &WFOUT

15.

ϥϯφʔ༻".*  ެࣜͷϥϯφʔ͸044͚ͩͲ".*͸ఏ‫͞ڙ‬Ε͍ͯͳ͍  IUUQTHJUIVCDPNBDUJPOTSVOOFS  1BDLFSͰ࡞੒͞Ε͍ͯΔ  গ͠खΛՃ͑Ε͹".*Λ࡞੒Մೳ  ͔͠͠ɺͦͷ··ͩͱαΠζ͕Ͱ͔͗ͯ͢ਏ͍  ࣗલͰ࠷খͷπʔϧ͚ͩೖͬͨ".*Λ1BDLFSͰ࡞੒

16.

".*ͷఆ‫ࣗظ‬ಈߋ৽  ".*ʹೖ͍ͬͯΔπʔϧ͕‫·ͯͬ͠ͳ͘ݹ‬Θͳ͍Α͏ʹ  ຖिࣗಈͰϏϧυˍσϓϩΠ

17.

ϞχλϦϯά  ఆ‫ظ‬తʹϝτϦΫεΛऩूͯ͠ҟৗΛ‫ݕ‬஌͢Δ  FHϥϯφʔ͕ಉ࣌ʹ‫ى‬ಈ͍ͯ͠Δ਺͕ଟ͗͢Δ $MPVE8BUDI &WFOUT -BNCEB 4MBDL

18.

࣮ࡍʹӡ༻ͯ͠Θ͔ͬͨਏ͍఺  ಉ͡ϥϯφʔ͕ෳ਺ճ࢖͍ճ͞ΕΔ  ϫʔΫεϖʔε͕ԚΕͨ··ʹͳΔͷͰɺ δϣϒଆͰΫϦʔϯΞοϓ͕ඞཁ  ϥϯφʔΛ࢖͍ճͣ͞ʹ࢖͍ࣺͯʹ͢ΔઃఆΛࢼͯ͠Έͨ  ಛఆͷঢ়‫Ͱگ‬Τϥʔ BDUJPOTSVOOFS   ͍ͬͨΜ͜ͷઃఆ͸‫ૹݟ‬Γ

19.

IUUQTHJUIVCDPNHJUIVCFWFOUT+BQBO.FFUVQEJTDVTTJPOT

20.

(JU)VC&OUFSQSJTF4FSWFSରԠ  ΄ͱΜͲखΛೖΕͣʹಉ͡࢓૊ΈΛ࢖͍ճͤͨ👍  BDUJPOTDBDIF͕࢖͑ͳ͍ͱ͍͏੍‫͕͋ݶ‬Δ🥲

21.

BXFTPNFSVOOFST  IUUQTHJUIVCDPNKPOJDPBXFTPNFSVOOFST  ηϧϑϗετϥϯφʔͷιϦϡʔγϣϯ·ͱΊ  ‫ػ‬ೳൺֱද͕͍͍‫͡ײ‬  Ұ௨Γߏங‫ʹޙ‬஌ͬͨͷͰɺ΋ͬͱૣ͘஌Γ͔ͨͬͨ😇

22.

·ͱΊ  ΦϯϓϨʹґଘ͢Δ։ൃͰ΋(JU)VC"DUJPOTΛར༻Մೳʹ  Φʔτεέʔϧ͢ΔͷͰ؅ཧίετ΋͓ۚ΋཈͑ΒΕͨ  ͱ͸͍͑࢓૊Έͷߏஙʹ͸ͦΕͳΓʹ͕͔͔͍࣌ؒͬͯΔ  ηϧϑϗετϥϯφʔͷιϦϡʔγϣϯ͸ ͍Ζ͍Ζ͋Δ͚Ͳ·ͩϕετϓϥΫςΟε‫ײ‬͸ͳ͍  (JU)VCଆͷվળ͕΄͍͠෦෼΋͋ΔͷͰࠓ‫ޙ‬΋‫ظ‬଴🙏