Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CI_CDってなあに?
Search
ninomiya_hy
March 23, 2019
Technology
1
460
CI_CDってなあに?
ninomiya_hy
March 23, 2019
Tweet
Share
More Decks by ninomiya_hy
See All by ninomiya_hy
クラウドエンジニアってなあに?
ninomiya_hy
0
54
Other Decks in Technology
See All in Technology
ChatGPTで論⽂は読めるのか
spatial_ai_network
8
27k
Debugging Edge AI on Zephyr and Lessons Learned
iotengineer22
0
180
Karate+Database RiderによるAPI自動テスト導入工数をCline+GitLab MCPを使って2割削減を目指す! / 20251206 Kazuki Takahashi
shift_evolve
PRO
1
720
手動から自動へ、そしてその先へ
moritamasami
0
300
re:Invent2025 コンテナ系アップデート振り返り(+CloudWatchログのアップデート紹介)
masukawa
0
360
AWS Security Agentの紹介/introducing-aws-security-agent
tomoki10
0
190
第4回 「メタデータ通り」 リアル開催
datayokocho
0
130
MLflowで始めるプロンプト管理、評価、最適化
databricksjapan
1
190
[JAWS-UG 横浜支部 #91]DevOps Agent vs CloudWatch Investigations -比較と実践-
sh_fk2
2
250
意外とあった SQL Server 関連アップデート + Database Savings Plans
stknohg
PRO
0
310
AI 駆動開発勉強会 フロントエンド支部 #1 w/あずもば
1ftseabass
PRO
0
350
年間40件以上の登壇を続けて見えた「本当の発信力」/ 20251213 Masaki Okuda
shift_evolve
PRO
1
120
Featured
See All Featured
A designer walks into a library…
pauljervisheath
210
24k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1.3k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Rails Girls Zürich Keynote
gr2m
95
14k
Visualization
eitanlees
150
16k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
We Have a Design System, Now What?
morganepeng
54
7.9k
Speed Design
sergeychernyshev
33
1.4k
Making Projects Easy
brettharned
120
6.5k
Done Done
chrislema
186
16k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Transcript
CI/CDͬͯͳ͋ʹʁ ʙ ͨͬͨ̑ͰCI/CD͕ͳΜͱͳ͔͘Δʁ͓ ʙ 2019 / 03 / 23ɹϊʔϚϯτษڧձ #3
ೋٶ ӳɹ@ninomiya_hy
※ITʹશ͘৮Εͨ͜ͱͷͳ͍ํͰۃྗ͔ ΔΑ͏ʹ͍ͯ͠ΔʢͭΓͷʣ ͨΊɺਓʹΑͬͯ Γͳ͍༰ͱͳ͍ͬͯΔՄೳੑ͕͋Γ· ͢ɻ͝༰͍ࣻͩ͘͞ɻ ※༰ʹ͍ͭͯेͳϦαʔνΛ౿·͑ͯ ࡞͍ͯ͠·͕͢ɺສ͕Ұ͓͔͠ͳ͕͟͝ ͍·ͨ͠ΒɺޙͰίοιϦ͓͍͑ͩ͘͞ɻ
ͳʹͱ͋Ε ·ͣࣗݾհ͔Β
ࣗݾհ ೋٶ ӳʢʹͷΈ ͻͰΏ͖ʣ • Twitterɿˏninomiya_hy • ৬ۀɿΠϯϑϥΤϯδχΞʢH31.4~ʣ ɹ ɹITۀքະܦݧʢલ৬Πϯϑϥاۀͷਓࣄɾ࿑୲ʣ
ɹ ɹWeb੍࡞ͰՔ͛ΔΑ͏ʹͳΔͧʂʢHTML / CSSʣ ɹ ɹˠ όοΫΤϯυͷํ͕໘നͦ͏ʂʢRubyʣ ɹ ɹˠ ੩తܕݴޠͰجૅݻΊ͠Α͏ʂʢJavaʣ ɹ ɹˠ ϑϩϯτΤϯυָ͍͠Μ͚ʂʢJavaScriptʣ ɹ ɹͱුؾΛ܁Γฦ͢͏ͪʹͳ͔ͥAWSΛ৮Δ͜ͱʹ • ಛɿ ɹ ɹѪඤग़ / ABܕ / ډञ͖ / ΧϥΦέ͖
ͦΕͰ͔͜͜Β ຊʹೖΓ·͢
CI/CDͬͯʁ
CI/CDͬͯʁ ܧଓత ౷߹ CIʢContinuous Integrationʣ ɹιϑτΣΞ։ൃʹ͓͍ͯɺϏϧυ ɹςετΛࣗಈԽ͠ɺܧଓతʹ࣮ࢪ͢Δख๏
CI/CDͬͯʁ ܧଓత ౷߹ ܧଓత ୡ CIʢContinuous Integrationʣ ɹιϑτΣΞ։ൃʹ͓͍ͯɺϏϧυ ɹςετΛࣗಈԽ͠ɺܧଓతʹ࣮ࢪ͢Δख๏ CDʢContinuous
Deliveryʣ ɹCIʹΑͬͯςετ͞ΕͨίʔυͷϚʔδɺ ɹຊ൪ڥ͚ͷϏϧυΛࣗಈతʹߦ͍ɺ ɹຊ൪ڥʹσϓϩΠ͕Մೳͳঢ়ଶΛ͑Δख๏
❓ CI/CDͬͯʁ
CI/CDͬͯʁ CIʢContinuous Integrationʣ ɹιϑτΣΞ։ൃʹ͓͍ͯɺϏϧυ ɹςετΛࣗಈԽ͠ɺܧଓతʹ࣮ࢪ͢Δख๏ CDʢContinuous Deliveryʣ ɹCIʹΑͬͯςετ͞ΕͨίʔυͷϚʔδɺ ɹຊ൪ڥ͚ͷϏϧυΛࣗಈతʹߦ͍ɺ ɹຊ൪ڥʹσϓϩΠ͕Մೳͳঢ়ଶΛ͑Δख๏
ܧଓత ౷߹ ܧଓత ୡ
CI/CDͬͯʁ CI/CDʢͬ͘͟Γʣ
CI/CDͬͯʁ CI/CDʢͬ͘͟Γʣ = ιϑτΣΞ։ൃʹ͓͚Δ ɹ͋Ε͜ΕΛػցʹ͓·͔ͤͯ͠ ɹϥΫ͢ΔɺεϐʔυΛ্͛Δɺ ɹϛεΛݮΒͨ͢Ίͷख๏ ɹ
CI/CDͬͯʁ CI/CDʢͬ͘͟Γʣ = ιϑτΣΞ։ൃʹ͓͚Δ ɹ͋Ε͜ΕΛػցʹ͓·͔ͤͯ͠ ɹϥΫ͢ΔɺεϐʔυΛ্͛Δɺ ɹϛεΛݮΒͨ͢Ίͷख๏ ɹBefore:ెาͰ໎ࢠ
CI/CDͬͯʁ CI/CDʢͬ͘͟Γʣ = ιϑτΣΞ։ൃʹ͓͚Δ ɹ͋Ε͜ΕΛػցʹ͓·͔ͤͯ͠ ɹϥΫ͢ΔɺεϐʔυΛ্͛Δɺ ɹϛεΛݮΒͨ͢Ίͷख๏ ɹBefore:ెาͰ໎ࢠ → After:ࣗಈӡసͰతʂ
CI/CDͷग़൪͍ͭʁ
CI/CDͷग़൪͍ͭʁ ཁ݅ఆٛ ઃܭ ϓϩάϥϛϯά ςετ σϓϩΠ Ϗϧυ ※मਖ਼ߋ৽(৽ػೳͷՃͳͲ)Λ͢Δ߹
CI/CDͷग़൪͍ͭʁ ཁ݅ఆٛ ઃܭ ςετ σϓϩΠ Ϗϧυ ※मਖ਼ߋ৽(৽ػೳͷՃͳͲ)Λ͢Δ߹ $% $* ϓϩάϥϛϯά
CIʹ͍ͭͯ ৄ͘͠ݟͯΈΔ
CIʢܧଓతΠϯςάϨʔγϣϯʣ͕ͳ͍ͱ͖ɾɾɾ CIʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ ࠜͭͬͨ͘Ͱʂ ίϛοτ
CIʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ ෦ͭͬͨ͘Ͱʂ ࠜͭͬͨ͘Ͱʂ CIʢܧଓతΠϯςάϨʔγϣϯʣ͕ͳ͍ͱ͖ɾɾɾ ίϛοτ
CIʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ ෦ͭͬͨ͘Ͱʂ ࠜͭͬͨ͘Ͱʂ ݰؔͭͬͨ͘Ͱʂ CIʢܧଓతΠϯςάϨʔγϣϯʣ͕ͳ͍ͱ͖ɾɾɾ ίϛοτ
CIʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ ෦ͭͬͨ͘Ͱʂ ࠜͭͬͨ͘Ͱʂ ݰؔͭͬͨ͘Ͱʂ ͋Εʁҧײ͕͋Δͳɾɾɾ ݰؔͳ͍͠ ෦ͷচઃܭ௨Γɾɾɾ
͋ɺࠜͷܗ͕͓͔͍ͧ͠ʂ ςετ Ϗϧυ Έཱͯ·ʔ͢ CIʢܧଓతΠϯςάϨʔγϣϯʣ͕ͳ͍ͱ͖ɾɾɾ ίϛοτ
CIʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ ෦ͭͬͨ͘Ͱʂ ࠜͭͬͨ͘Ͱʂ ݰؔͭͬͨ͘Ͱʂ Ϗϧυ Έཱͯ·ʔ͢ ͳʹͬͯΜͩςϝΣοʂʂ
͢Έ·ͤΜɾɾɾ ͬͱૣ͘ؾ͍͍ͯΕ ͜Μͳ͜ͱʹͳΒͳ͔ͬͨͷʹɾɾɾ ͋Εʁҧײ͕͋Δͳɾɾɾ ݰؔͳ͍͠ ෦ͷচઃܭ௨Γɾɾɾ ͋ɺࠜͷܗ͕͓͔͍ͧ͠ʂ CIʢܧଓతΠϯςάϨʔγϣϯʣ͕ͳ͍ͱ͖ɾɾɾ ίϛοτ ςετ
CIʢܧଓతΠϯςάϨʔγϣϯʣ͕͋Δͱ͖ʂ CIʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ ࠜͭͬͨ͘Ͱʂ ʮ࡞ολσʯτݴϫϨλϥɹʹɹίϛοτ ɹϛཱςςɹɹɹɹɹɹɹʹɹϏϧυ ɹݕࠪγϚεɹɹɹɹɹɹɹʹɹςετ ίϛοτ
CIʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ ࠜͭͬͨ͘Ͱʂ ϛཱςϚε Ϗϧυ ࠜΨΦΧγΠσε CIʢܧଓతΠϯςάϨʔγϣϯʣ͕͋Δͱ͖ʂ ίϛοτ
ςετ
CIʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ ͭ͘Γͨ͠Ͱʂ CIʢܧଓతΠϯςάϨʔγϣϯʣ͕͋Δͱ͖ʂ ίϛοτ
CIʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ ͭ͘Γͨ͠Ͱʂ ϛཱςϚε Ϗϧυ ࠜ0,σε CIʢܧଓతΠϯςάϨʔγϣϯʣ͕͋Δͱ͖ʂ ίϛοτ
ςετ
CIʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ ෦ͭͬͨ͘Ͱʂ Ϗϧυ ͭ͘Γͨ͠Ͱʂ ϛཱςϚε ࠜ0,σε CIʢܧଓతΠϯςάϨʔγϣϯʣ͕͋Δͱ͖ʂ
ίϛοτ ςετ
CIʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ ෦ͭͬͨ͘Ͱʂ ϛཱςϚε Ϗϧυ ͭ͘Γͨ͠Ͱʂ ϛཱςϚε ࠜ0,σε
ࠜɾ෦0,σε CIʢܧଓతΠϯςάϨʔγϣϯʣ͕͋Δͱ͖ʂ ίϛοτ ςετ
CIʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ ෦ͭͬͨ͘Ͱʂ ݰؔͭͬͨ͘Ͱʂ ϛཱςϚε Ϗϧυ ͭ͘Γͨ͠Ͱʂ ϛཱςϚε
ࠜ0,σε ࠜɾ෦0,σε CIʢܧଓతΠϯςάϨʔγϣϯʣ͕͋Δͱ͖ʂ ίϛοτ ςετ
CIʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ ෦ͭͬͨ͘Ͱʂ ݰؔͭͬͨ͘Ͱʂ ϛཱςϚε Ϗϧυ Φʔϧ0,σε ϛཱςϚε
ͭ͘Γͨ͠Ͱʂ ϛཱςϚε ࠜ0,σε ࠜɾ෦0,σε CIʢܧଓతΠϯςάϨʔγϣϯʣ͕͋Δͱ͖ʂ ίϛοτ ςετ
CIʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ ෦ͭͬͨ͘Ͱʂ ݰؔͭͬͨ͘Ͱʂ ϛཱςϚε Ϗϧυ Φʔϧ0,σε ϛཱςϚε
ͭ͘Γͨ͠Ͱʂ ϛཱςϚε ࠜ0,σε ࠜɾ෦0,σε Ұճڭ͑ͨΒຖճᘳʹ ͬͯ͘ΕΔ͔ΒϥΫͩΘʙ ΞΠπΒɹɹɹɹɹΑΓ ࣄ͕͑ʔͳʂʂ ϛε͚ͬͨͲ͙͢ʹͤͨͰʂ CIʢܧଓతΠϯςάϨʔγϣϯʣ͕͋Δͱ͖ʂ ίϛοτ ςετ
CI͕ͳ͍ͱ͖ɾɾɾ ɹͦΕͧΕ͕࡞ΓऴΘ͔ͬͯΒॳΊͯશମͷύʔπΛΈཱͯΔͨΊɺ ɹϛε͕͋ͬͨͱ͖ʹݪҼΛಛఆ͢Δͷ͕େมɻӨڹൣғσΧ͍ɻ CIʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ
CI͕ͳ͍ͱ͖ɾɾɾ ɹͦΕͧΕ͕࡞ΓऴΘ͔ͬͯΒॳΊͯશମͷύʔπΛΈཱͯΔͨΊɺ ɹϛε͕͋ͬͨͱ͖ʹݪҼΛಛఆ͢Δͷ͕େมɻӨڹൣғσΧ͍ɻ CI͕͋Δͱ͖ʂ ɹҰਓ͕࡞ΓऴΘΔɺࣗಈͰύʔπΛΈཱͯͯ͘ΕΔͨΊɺ ɹϛε͕͋ͬͨΒ͙͢ʹ͔Δ͠ɺӨڹൣғ͕খ͍͞͏ͪʹͤΔɻ ɹɺࣗಈͰΈཱͯΔɹʹɹܧଓతΠϯςάϨʔγϣϯʢ౷߹ʣ CIʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ
Ϗϧυ
ͭ·ΓCI࠷ߴ
CDʹ͍ͭͯ ৄ͘͠ݟͯΈΔ
CDʢܧଓతσϦόϦʔʣɺ CIʢܧଓతΠϯςάϨʔγϣϯʣΛ֦ுͨ͠ख๏ CDʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ σϓϩΠ
CDʢܧଓతσϦόϦʔʣɺ CIʢܧଓతΠϯςάϨʔγϣϯʣΛ֦ுͨ͠ख๏ CDʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ σϓϩΠ ʮ࡞ολσʯτݴϫϨςɹɹɹʹɹίϛοτ ɹϛཱςςɹɹɹɹɹɹɹɹʹɹϏϧυ ɹݕࠪγλϞϊϮɹɹɹɹɹɹʹɹςετ
ɹຊ൪τϗϘಉδڥχ ɹӡϯσ࠷ऴνΣοΫγϚεɹʹɹεςʔδϯά
CDʢܧଓతσϦόϦʔʣɺ CIʢܧଓతΠϯςάϨʔγϣϯʣΛ֦ுͨ͠ख๏ CDʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ σϓϩΠ ʮ࡞ολσʯτݴϫϨςɹɹɹʹɹίϛοτ ɹϛཱςςɹɹɹɹɹɹɹɹʹɹϏϧυ ɹݕࠪγλϞϊϮɹɹɹɹɹɹʹɹςετ
ɹຊ൪τϗϘಉδڥχ ɹӡϯσ࠷ऴνΣοΫγϚεɹʹɹεςʔδϯά ϤϩγΫΦωΨΠγϚε εςʔδϯάڥσϊ࠷ऴνΣοΫ0, ΠπσϞຊ൪ڥχσϓϩΠσΩϚε εςʔδϯά
CDʢܧଓతσϦόϦʔʣɺ CIʢܧଓతΠϯςάϨʔγϣϯʣΛ֦ுͨ͠ख๏ CDʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ σϓϩΠ ʮ࡞ολσʯτݴϫϨςɹɹɹʹɹίϛοτ ɹϛཱςςɹɹɹɹɹɹɹɹʹɹϏϧυ ɹݕࠪγλϞϊϮɹɹɹɹɹɹʹɹςετ
ɹຊ൪τϗϘಉδڥχ ɹӡϯσ࠷ऴνΣοΫγϚεɹʹɹεςʔδϯά ϤϩγΫΦωΨΠγϚε σϓϩΠ εςʔδϯάڥσϊ࠷ऴνΣοΫ0, ΠπσϞຊ൪ڥχσϓϩΠσΩϚε εςʔδϯά σϓϩΠʹ͓٬͞Μ͕͍࢝ΊΔ ͔ͩΒػցʹউखʹΒΕͪΌ͋ࠔΔͥʂ ԶͷνΣοΫ݁Ռ0,ͩʂ σϓϩΠ͢Δͥʂ ※ CDʢܧଓతσϦόϦʔʣɺ ɹ͍ͭͰσϓϩΠͰ͖Δঢ়ଶʹ͢Δͷ
CDʢܧଓతσϦόϦʔʣɺ CIʢܧଓతΠϯςάϨʔγϣϯʣΛ֦ுͨ͠ख๏ CDʹ͍ͭͯৄ͘͠ݟͯΈΔ PG ςετ Ϗϧυ σϓϩΠ ʮ࡞ολσʯτݴϫϨςɹɹɹʹɹίϛοτ ɹϛཱςςɹɹɹɹɹɹɹɹʹɹϏϧυ ɹݕࠪγλϞϊϮɹɹɹɹɹɹʹɹςετ
ɹຊ൪τϗϘಉδڥχ ɹӡϯσ࠷ऴνΣοΫγϚεɹʹɹεςʔδϯά ϤϩγΫΦωΨΠγϚε σϓϩΠ εςʔδϯάڥσϊ࠷ऴνΣοΫ0, ΠπσϞຊ൪ڥχσϓϩΠσΩϚε εςʔδϯά εςʔδϯά0,ϦϣΧΠ σϓϩΠγϚε ※ CDʢܧଓతσϦόϦʔʣɺ ɹ͍ͭͰσϓϩΠͰ͖Δঢ়ଶʹ͢Δͷ ɹCDʢܧଓతσϓϩΠʣಋೖ͢Δͱ ɹίϛοτʙσϓϩΠ·ͰࣗಈԽͰ͖Δ
·ͱΊΔͱ
·ͱΊΔͱ ෦ͭͬͨ͘Ͱʂ ݰؔͭͬͨ͘Ͱʂ ͭ͘Γͨ͠Ͱʂ ίϛοτ
ɹɹɹ$*ʢܧଓతΠϯςάϨʔγϣϯʣ ·ͱΊΔͱ ෦ͭͬͨ͘Ͱʂ ݰؔͭͬͨ͘Ͱʂ ϛཱςϚε Φʔϧ0,σε ϛཱςϚε ͭ͘Γͨ͠Ͱʂ ϛཱςϚε ࠜ0,σε
ࠜɾ෦0,σε ςετ Ϗϧυ ίϛοτ
ɹɹɹ$*ʢܧଓతΠϯςάϨʔγϣϯʣ ɹɹɹ$%ʢܧଓతσϦόϦʔʣ ·ͱΊΔͱ ෦ͭͬͨ͘Ͱʂ ݰؔͭͬͨ͘Ͱʂ ϛཱςϚε Φʔϧ0,σε ϛཱςϚε ͭ͘Γͨ͠Ͱʂ ϛཱςϚε
ࠜ0,σε ࠜɾ෦0,σε ςετ Ϗϧυ ίϛοτ εςʔδϯά σϓϩΠ
ɹɹɹ$*ʢܧଓతΠϯςάϨʔγϣϯʣ ɹɹɹ$%ʢܧଓతσϦόϦʔʣ ·ͱΊΔͱ ෦ͭͬͨ͘Ͱʂ ݰؔͭͬͨ͘Ͱʂ ϛཱςϚε Φʔϧ0,σε ϛཱςϚε ͭ͘Γͨ͠Ͱʂ ϛཱςϚε
ࠜ0,σε ࠜɾ෦0,σε ςετ Ϗϧυ ίϛοτ εςʔδϯά σϓϩΠ or ※ CDʢܧଓతσϓϩΠʣ ɹɹɹ$%ʢܧଓతσϓϩΠʣ
ɹɹɹ$*ʢܧଓతΠϯςάϨʔγϣϯʣ ɹɹɹ$%ʢܧଓతσϦόϦʔʣ ·ͱΊΔͱ ෦ͭͬͨ͘Ͱʂ ݰؔͭͬͨ͘Ͱʂ ϛཱςϚε Φʔϧ0,σε ϛཱςϚε ͭ͘Γͨ͠Ͱʂ ϛཱςϚε
ࠜ0,σε ࠜɾ෦0,σε ςετ Ϗϧυ ίϛοτ εςʔδϯά σϓϩΠ or ※ CDʢܧଓతσϓϩΠʣ ɹɹɹ$%ʢܧଓతσϓϩΠʣ ͋ͳͨͷ։ൃڥʹCI/CDπʔϧΛಋೖͯ͠༡ΜͰΈΑ͏ʂ