設定だけでCircleCIの実行時間を短縮できるかもしれない話
書き起こし https://github.com/operando/Notes/tree/master/note_%E7%A4%BE%E5%86%85LT_2020-06-26
ઃఆ͚ͩͰ CircleCIͷ࣮ߦ࣌ؒΛ ॖͰ͖Δ͔͠Εͳ͍note ࣾLT
View Slide
CIճͯ͠·͔͢ʁ
CircleCIͷϓϥϯ• PerformanceϓϥϯͰ͢• ͬ͘͟Γ͍͏ͱैྔ՝ۚϞσϧ• https://circleci.com/ja/pricing/
ࡉ͔͍͜ͱؾʹ͠ͳ͍Ͱ͍ͩ͘͞
ઃఆ͚ͩͰCircleCIͷ࣮ߦ࣌ؒΛॖͤ͞Δखஈ• resource_class• cache• parallelism• Workflow• DLC
• resource_class• cache• parallelism• Workflow• DLCnoteͰͦΕͧΕΛ͏·͘׆༻͍ͯ͠·͢
հ͢Δͷجຊతʹconfig.ymlΛ มߋ͢Δ͚ͩͰ͑·͢
cache• ՌΛcacheͯ͠ɺ࣍ͷϏϧυʹ׆༻͢Δతͳ͋Ε• มߋ͕ͳ͚Εಉ݁͡Ռ͕ಘΒΕΔ໘Ͱ׆༻Ͱ͖·͢• ґଘؔͷϥΠϒϥϦΩϟογϡͱ͔·͞ʹͦΕ• yarnͱ͔Bundlerͱ͔ͦ͏Ͱ͢Ͷ
resource_class• CIΛ࣮ߦ͢ΔϚγϯͷύϫʔΛઃఆ͢Δͷ• σϑΥϧτ mediumʢCPU 2 ϝϞϦ 4Gʣ• Ϛγϯύϫʔ্͛ΔͱϏϧυͱ͔ૣ͘ͳΔڥͰ͔ͳΓཱͭ• AndroidͰ xlargeʢCPU 8 ϝϞϦ 16Gʣ༻• job͝ͱʹࢦఆͰ͖·͢
resource_class• Ϛγϯύϫʔ্͕ΔͷͰɺͦͷैྔ՝ۚͷ͓ஈ্͕Γ·͢• ૿͠૿͠ʹͯ͠CPUͱϝϞϦΛ׆༻͖͠Εͳ͍߹ʹෆ͖
resource_classhttps://circleci.com/docs/ja/2.0/configuration-reference/#resource_class
parallelism• jobͷ࣮ߦΛෳͷϚγϯͰ ࣮ߦ͍ͤͨ͞߹ʹઃఆ• ओʹςετͷฒྻ࣮ߦͰΘΕΔ• noteͷRailsݱࡏ parallelism 3
parallelism• ͋Δఔ·ͰฒྻԽ͢Δͱૣ͘ͳΔ• ฒྻԽͯ͠ଟগͷภΓى͖Δ• AϚγϯͱBϚγϯͰ࣮ߦ࣌ؒʹ͕ࠩग़Δ• ࠩΛௐ͢ΔΈͱͯ͠ɺTiming Data͕ଘࡏ͢Δ• ฒྻԽ͗͢͠Δͱ࣌ؒॖͱैྔ՝ۚͷίετ͕ ݟ߹Θͳ͘ͳΔ
parallelismhttps://circleci.com/docs/ja/2.0/configuration-reference/#parallelism
Running Tests in Parallelhttps://circleci.com/docs/2.0/parallelism-faster-jobs/
Workflow• jobͷ࣮ߦॱংΛఆٛͯ͠ɺ͍͍ײ͡ʹjobΛ ฒྻ࣮ߦͨ͠Γΰχϣΰχϣ͢Δ• ͪΐͬͱෳࡶ͚ͩͲ׳Εͯ͘Δͱศར• ஞ࣮࣍ߦͯͨ͠ͷΛฒྻ࣮ߦͤ͞ΒΕΔΑ͏ʹͳΔͱޮՌग़ͯ͘Δ• ঢ়گʹԠ࣮ͯ͡ߦ͢ΔWorkflowΛม͑ͨΓ͢Δͱศར
• Ϗϧυͯ͠ɺͦͷ݁ՌΛ2ͭͷjobʹڞ௨ͯ͠ɺjobΛฒྻ࣮ߦͯ͠Δ• ஞ࣮࣍ߦΑΓ30min͘Β͍ૣ͘ͳΔWorkflowྫ
Workflow• Γ͗͢ҙ
Workflowhttps://circleci.com/docs/ja/2.0/workflows/
͓ۚͷ• ݸਓతʹؾʹ͠ͳ͍͍ͯ͘ͱࢥͬͯΔ• ແବμϝ"• ͓ۚΑΓ͕࣌ؒॖͰ͖Δํ͕࠷ߴ• Time is money
·ͱΊ• CIੜ͖Ͱ͢ɺҭ͠·͠ΐ͏• ʮ͘Ͷʁʯͱࢥͬͨͦͷ͕࣌ΧΠθϯ࣌ظ• ͓ۚΛ͔͚Εૣ͘ͳΔ…͔