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
「カスタマイズ」から「標準化」へ。 CI as a Service の考え方を取り入れて D...
Search
Hiroshi Maekawa (a.k.a. Posaune)
October 22, 2018
Programming
1
480
「カスタマイズ」から「標準化」へ。 CI as a Service の考え方を取り入れて DevOps を加速させよう!
#devkan 「CI/CDの話」発表資料です。
Hiroshi Maekawa (a.k.a. Posaune)
October 22, 2018
Tweet
Share
More Decks by Hiroshi Maekawa (a.k.a. Posaune)
See All by Hiroshi Maekawa (a.k.a. Posaune)
サーバーレス時代にこそ 身につけたいTDD入門
posaunehm
0
300
大正Geek Night 2018-08-27
posaunehm
0
110
Other Decks in Programming
See All in Programming
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
3
490
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
2
18k
Result型で“失敗”を型にするPHPコードの書き方
kajitack
5
920
Team operations that are not burdened by SRE
kazatohiei
1
310
Is Xcode slowly dying out in 2025?
uetyo
1
280
#kanrk08 / 公開版 PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bash0c7
1
780
すべてのコンテキストを、 ユーザー価値に変える
applism118
3
1.3k
dbt民主化とLLMによる開発ブースト ~ AI Readyな分析サイクルを目指して ~
yoshyum
3
1k
RailsGirls IZUMO スポンサーLT
16bitidol
0
190
ソフトウェア品質を数字で捉える技術。事業成長を支えるシステム品質の マネジメント
takuya542
2
14k
Rails Frontend Evolution: It Was a Setup All Along
skryukov
0
160
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
650
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Git: the NoSQL Database
bkeepers
PRO
430
65k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Scaling GitHub
holman
460
140k
It's Worth the Effort
3n
185
28k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
Become a Pro
speakerdeck
PRO
29
5.4k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Into the Great Unknown - MozCon
thekraken
40
1.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Transcript
ʮΧελϚΠζʯ͔Βʮඪ४Խʯɻ CI as a Service ͷߟ͑ํΛऔΓೖΕͯ DevOps ΛՃͤ͞Α͏ʂ
ΪϧυϫʔΫεגࣜձࣾ લ തࢤ
͡Ίʹ
ΪϧυϫʔΫεʹ͍ͭͯ
None
None
None
ͤΓΧΠθϯΞϓϦͷͰىͬͨ͜CIମݧ • ே4࣌ͷڕࢢͰ࣮ূ࣮ݧ • ࣮ݧதʹόάൃੜʂʂ • ✨ ͦͷͰόάमਖ਼͠ɺGithubʹPush • CircleCIͰϏϧυ/ςετ࣮ߦ
• खݩͷΞϓϦʹमਖ਼൛͕৴͞Εɺݕূଓߦʂʂ ͍͍ͩͨɺ͘Β͍Ͱղܾ
CI/CDඪ४ࡌͷ։ൃʹڵຯ͋Δํ ΪϧυϫʔΫε·Ͱʂ https://guildworks.jp/contacts/new.html
ʮΧελϚΠζʯ͔Βʮඪ४Խʯɻ CI as a Service ͷߟ͑ํΛऔΓೖΕͯ DevOps ΛՃͤ͞Α͏ʂ
ΪϧυϫʔΫεגࣜձࣾ લ തࢤ
ࣗݾհ • ΪϧυϫʔΫεגࣜձࣾ ALMΤϯδχΞ • Application Lifecycle Management • ಘҙٕ
• ։ൃ • αʔόʔαΠυɿ Java • "OESPJE+BWB→,PUPMJO • iOS: Swift • Webϑϩϯτɿ Vuejs, Angular/Ionic • ͦͷଞɿ C# ͕Ұ൪͖͚ͩͲ࠷ۙॻ͍͍ͯͳ͍… • CI / CDͷඋ • ࠷ۙͬͺΒCircleCI
ͯ͞ɺຊɻ
Agenda • CI/CDͷྺ࢙͓͞Β͍ • ͳͥCI as a Service ͳͷ͔ •
CI as a Service ͱͲΜͳͷ ʁ • ·ͱΊ
CI/CDͷྺ࢙ʢJenkinsΛத৺ͱͨ͠ʣ 2005 2011 2018 Jenkins X 2004 2008 2013 Kubernetes
2014 2016 2011 Docker Jenkins 2.0 Travis CI Ϗϧυͷ ίϯςφԽ
ͳͥ CI as a Serviceͳͷ͔ - Jenkinsͷޭࡑ - Jenkins৬ਓ -
CI as a Service ͱ͍͏खஈ - CI as a Service ͷϝϦοτ
Jenkinsͷޭࡑ • JenkinsCI ΛͨΓલʹͨ͠ • ʮఆظతʹԿ͔Λ࣮ߦ͢Δʯͱ͍͏࡞ۀ͕ϧʔνϯͰ ͋Δ͜ͱΛΈΜͳ͕ೝࣝͨ͠ • ʮ໘͍͔͘͞ΒJenkinsͰΒͳ͍ʁʯͱ͍͏จԽ͕ ৢ͞Εͨ
• ͳΜͰJenkinsͰΔਓ͕૿͖͑ͯͨ • Jenkins৬ਓͷੜ
Jenkins৬ਓ • ෳͷϓϥάΠϯΛΈ߹ΘͤͨΓ࢝͠ΊΔͱɺಠࣗͷจԽ͕ Ͱ͖ͯϝϯς͕͘͠ͳΔ • ઃఆͷϘϦϡʔϜ͕ଟ͘ͳΓ͗ͯ͢ɺཧෆೳʹͳΔʢJenkins ઃఆΛίʔυԽͰ͖ͳ͔ͬͨʣ • Jenkins͕Πϯετʔϧ͞Ε͍ͯΔϚγϯͷߏཧΛͪΌΜͱ ͍ͯ͠ͳ͍ͱɺʮJenkins্Ͱಈ͍ͯ·ͨ͠ʯͱ͍͏͕ɻ
• ʮΈ͏Β͞ΜʢԾ໊ʣ͕͍ͳ͍ͷͰϏϧυͰ͖·ͤΜʂʯͱ͔ ݴΘΕ࢝ΊΔɻ • ͦΜͳͱ͜ΖͰ৬ਓ͕͍ͳ͘ͳͬͨΒɺɺɺ
ςετࣗಈԽͷύλʔϯݴޠ http://www.slideshare.net/Posaune/agile-tourosaka
CI as a Service ͱ͍͏खஈ • Ϋϥυ্ʹߏங͞ΕͨϏϧυαʔό • GithubͳͲ֎෦ΞΫηεՄೳͳϨϙδτϦ͕ඞཁ •
ར༻ऀܹ૿த • Github GitlabͳͲͷιʔεཧαʔϏεΈࠐΈ ͷCI ServiceΛఏڙ։࢝࢝͠Ίͨ • https://github.com/features/actions
ࢀߟ: Github Actions
CI as a Service ͷಛ • ϏϧυɾσϓϩΠຖʹϑϨογϡͳVMΛىಈ͢Δ Έ͕औΒΕ͍ͯΔ • ؆୯ͳઃఆGUIɺෳࡶͳઃఆΈࠐΈͷઃఆϑΝΠ
ϧͰߦ͏ʢYAMLϑΝΠϧ͕ଟ͍) • GithubͳͲͷϗεςΟϯάαʔϏεHeroku/AWSͳ Ͳͱͷ࿈ܞػߏΛඋ͑Δ
CI as a Service ͷ͍͍ͱ͜Ζ • ্ཱͪ͛ઃఆϘλϯҰͭɺ͋ͬͱ͍͏ؒʹCI͕։࢝ Ͱ͖Δ • ڥͷFresh͕͞อূ͞Ε͍ͯΔͷͰɺڥґଘΤϥʔ
ͷಛఆ͕༰қʹͳΔ • ෳࡶͳઃఆϨϙδτϦͷYAMLͳͲʹॻ͘ͷͰɺ όʔδϣϯཧͰ͖Δɻ
CI as a Service ͱ৬ਓ • ϚγϯߏؚΊͯɺΔ͜ͱ͕΄΅ίʔυԽ͞Ε͍ͯΔ = ʮ৬ਓ͔͠Βͳ͍ใʯΛۃখԽͰ͖Δ 㱺
৬ਓͷࣝଐਓԽΛճආ • ͳΜ͔ͩΜͩͰΕΔ͜ͱʹ੍ݶ͕͋Δ = ৬ਓࠢΛదʹ੍ݶͰ͖Δ 㱺 ຊདྷCIʹෆదͳ͜ͱΛΒͤͯ͠·͏Λճආ
CI as a Service ͱͲΜͳͷ ʁ - CircleCIΛྫʹͱͬͯߟ͑Δ - -
CircleCIͰϏϧυ͢Δʹʁ - config.ymlͷதΛΔ - ଞʹCircleCIͰͰ͖Δ͜ͱ
Γ·͢
CircleCIͰϏϧυͯ͠ΈΑ͏ʂ ʙͦͷ1ʙ • GithubΞΧϯτΛ࿈ܞ͢Δ • Build Project Λઃఆ͢Δ •
CircleCIͰϏϧυͯ͠ΈΑ͏ʂ ʙͦͷ1ʙ • ࣗಈੜ͞ΕͨconfigϑΝΠϧΛίϐϖ͢Δ • ʢ͓͠·͍ʣ
None
͔Β͘Γ • ඪ४తͳϏϧυγεςϜͰߏங͞Ε͍ͯΕɺ উखʹͦΕʹैͬͨϏϧυΛ࡞ͬͯ͘ΕΔ • maven / gradle • npm
/ yarn • Rake & Bundle • ͜ͷΑ͏ʹɺͰ͖Δ͚ͩʮඪ४ʹै͏ʯͷ͕ CI as a Service Λ͏ϙΠϯτ
config.ymlͷதΛΔ ᶃ ϙΠϯτᶅ ϏϧυΩϟογϡ ϙΠϯτᶄ npm ϙΠϯτᶃ Docker ϙΠϯτᶆ
ޙଓͷϏϧυͷͨΊͷ ݁Ռอ࣋
config.ymlͷதΛΔᶄ ϙΠϯτᶇ ෳͷϏϧυύλʔϯ ϙΠϯτ ᶈ AWSͱͷ࿈ܞ
config.ymlͷதΛΔᶅ ϙΠϯτ ᶉ ෳϏϧυͷ࿈ܞ
ଞʹCircleCIͰͰ͖Δ͜ͱ • MacOSϏϧυ • AWS CodeDeploy࿈ܞ / Heroku࿈ܞ • SlackͳͲChatOpsͱͷ࿈ܞ
• SSHͰίϯςφʹଓ • ϩʔΧϧʹCircleCIͷΫϩʔϯΛ࡞ • CircleCI 2.0 ͔Βಋೖ
·ͱΊ • CI as a Service ɺؾܰʹCIΛ࢝ΊΔ࠷ྑͷखஈ • ඪ४తͳελΠϧʹ߹ΘͤΔ͜ͱͰɺߴʹCI/CD Λ։ൃʹऔΓࠐΊΔ
• ͜ΕΛػձʹඪ४Λֶ΅͏ • ϏϧυγεςϜ / Docker / AWS • Github / CircleCI མͪͨͱ͖ͷ͜ͱߟ͓͑ͯ͜͏ • CircleCI Travis ϩʔΧϧϏϧυͰ͖Δ͔Β…