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
開発者(個人)のためのJenkins 運用編
Search
Yasuhiroki
November 08, 2017
Technology
0
2.3k
開発者(個人)のためのJenkins 運用編
第11回 Jenkins勉強会 LT
Yasuhiroki
November 08, 2017
Tweet
Share
More Decks by Yasuhiroki
See All by Yasuhiroki
自分に勉強させるには
yasuhiroki
1
430
Android Studio `Command+Shift+A`
yasuhiroki
0
370
シェルスクリプトをサーバーレスで cron したい
yasuhiroki
1
870
rails new コマンド
yasuhiroki
1
810
自動化を習慣化する
yasuhiroki
2
15k
GitHub Actions Parallel Testing
yasuhiroki
1
1.3k
circleci.vim
yasuhiroki
0
1.7k
ベンチャー企業がCircleCIを選んだ理由と活用方法
yasuhiroki
1
830
Rubyの正規表現を調べてみた
yasuhiroki
0
940
Other Decks in Technology
See All in Technology
なぜ あなたはそんなに re:Invent に行くのか?
miu_crescent
PRO
0
240
通勤手当申請チェックエージェント開発のリアル
whisaiyo
3
630
AWSに革命を起こすかもしれない新サービス・アップデートについてのお話
yama3133
0
530
Microsoft Agent Frameworkの可観測性
tomokusaba
1
120
ペアーズにおけるAIエージェント 基盤とText to SQLツールの紹介
hisamouna
2
2k
AgentCoreとStrandsで社内d払いナレッジボットを作った話
motojimayu
1
1.2k
複雑さを受け入れるか、拒むか? - 事業成長とともに育ったモノリスを前に私が考えたこと #RSGT2026
murabayashi
0
170
[Data & AI Summit '25 Fall] AIでデータ活用を進化させる!Google Cloudで作るデータ活用の未来
kirimaru
0
4.1k
Snowflake Industry Days 2025 Nowcast
takumimukaiyama
0
150
TED_modeki_共創ラボ_20251203.pdf
iotcomjpadmin
0
180
"人"が頑張るAI駆動開発
yokomachi
1
660
20251222_サンフランシスコサバイバル術
ponponmikankan
2
150
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
35
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
210
Optimizing for Happiness
mojombo
379
70k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.1k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
0
26
Technical Leadership for Architectural Decision Making
baasie
0
200
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
350
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
880
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
0
980
What does AI have to do with Human Rights?
axbom
PRO
0
1.9k
Writing Fast Ruby
sferik
630
62k
Transcript
։ൃऀ(ݸਓ)ͷͨΊͷ Jenkins ӡ༻ฤ @yasuhiroki
@yasuhiroki
https://certificates.cloudbees.com/10203903
։ൃऀ(ݸਓ)ͷͨΊͷJenkins
ࢲͷࢲʹΑΔࢲͷͨΊͷJenkins • ผʹࣗͰͬͯྑ͍Μ͚ͩͲɺ ΘΓʹͬͯ͘ΕΔͳΒॿ͔Δ࡞ۀ • ۀͱͯࣗ͠ಈԽ͢Δ΄ͲͰͳ͍͚Ͳɺ ࣗಈԽͤͣʹ͍ΒΕͳ͔ͬͨ࡞ۀ • ༡ͼ
ͤͳੜ׆ ࠓૉ͔ɺφϕΞπ͔Λڭ͑ͯ͘ΕΔࣥࣄ
ࣥࣄޏ༻ܭը
ࣥࣄ͍ࣺͯ
ඞཁͳ࣌ʹޏ͍ ඞཁͷͳ͍࣌ղޏ͢Δ
Jenkinsͷߏங
ࢲͷͨΊͷJenkins͔ͩΒ ࢲͷ͖ͳΑ͏ʹߏங͢Δ
DockerͰJenkinsΛىಈ͢Δ • Docker • https://hub.docker.com/_/jenkins/ Ͱͳ͘ • https://hub.docker.com/r/jenkinsci/jenkins/ Ͱͳ͘ •
https://hub.docker.com/r/jenkins/jenkins/ ͚ͩͲ • https://store.docker.com/images/jenkins ͋Δ
JenkinsͷߏஙGitHubͰཧ • docker-compose • docker-compose.yml Λ GitHub Ͱཧ
ΧελϚΠζDockerfileͰ • Dockerfile • ࢲͷͨΊͷJenkinsͷॳظߏங • ࣗ༻ͷ Docker ΠϝʔδΛ DockerHub
ʹ push ͯ͠ྑ͍ • ࣗͷࣥࣄ͕ଞॴͰಇ͍ͯࣧౄ͠ͳ͍ਓʹݶΔ • ͋Β͔͡Ί༻ҙ͞Ε͍ͯΔػೳΛ͑ɺ DockerΠϝʔδΛ༻ҙ͠ͳͯ͋͘ΔఔಈతʹߏஙͰ͖Δ
*.override • ެࣜJenkins Docker ͷػೳ • config.xml.override ͳͲͱ༻ҙͨ͠ϑΝΠϧͰɺίϯς φىಈ࣌ʹݩͷϑΝΠϧʹ্ॻ͖͢Δ •
ڧͯ͘χϡʔήʔϜͰ͖Δ
install-plugin.sh • ެࣜJenkins Docker ͷػೳ • Πϯετʔϧ͍ͨ͠ plugin ͷҰཡΛॻ͍ͨϑΝΠϧΛ৯ ΘͤΔͱɺίϯςφىಈ࣌ʹ
ґଘ͢Δ plugin ؚΊͯΠ ϯετʔϧͯ͘͠ΕΔ • όʔδϣϯࢦఆՄೳ
-Djenkins.install.runSetupWizard=false • Jenkinsىಈ࣌ʹ͢JAVA_OPT • ॳճىಈ࣌ʹग़ͯ͘ΔɺΦεεϝϓϥάΠϯͷΠϯετʔ ϧηΩϡϦςΟઃఆͳͲΛεΩοϓͰ͖Δ • ࢲͷࢲʹΑΔࢲͷͨΊͷJenkinsʹෆཁͳͷͰઃఆ͢Δ
Jenkinsδϣϒͷཧ
ࢲͷͨΊͷJenkins͔ͩΒ ࢲ͕ϝϯςͰ͖Ε͍͍
GitHub Organization Plugin • Multibranch Pipeline ͷ GitHub ಛԽ൛ •
ࣗͷΞΧϯτΛࢦఆ͢Δ͚ͩͰɺJenkinsfile Λ࣋ͭ ϦϙδτϦΛݕग़ͯ͠উखʹϏϧυͯ͘͠ΕΔ • ࠓճ https://github.com/yasuhiroki/myJenkinsfile ͚ͩ Λݕग़͢ΔΑ͏ʹઃఆ
δϣϒ = ϒϥϯν • jobs/* ͱ͍͏໊લͷϒϥϯν͕ɺJenkinsͷδϣϒʹͳΔ Α͏ઃఆ͢Δ • jobs/sendo, jobs/today-is
ͳͲɺδϣϒຖʹϒϥϯνΛ࡞ Δ
git worktree ίϚϯυ • δϣϒ͝ͱʹ͍͍ͪͪ checkout ͢Δͷ໘ͳͷͰɺ git worktree ίϚϯυΛར༻͢Δ
• git worktree add jobs/today-is jobs/today-is ͱ͢Δͱɺ jobs/today-is σΟϨΫτϦʹ jobs/today-is ϒϥϯν͕ νΣοΫΞτ͞ΕΔ • ϒϥϯνͷ͚ͩσΟϨΫτϦΛ࡞ͬͯ checkout ͢Εɺ δϣϒͷઃఆ͕ू·ͬͨ jobs σΟϨΫτϦͷͰ͖͕͋Γ
Jenkinsfile • ࢲͷͨΊͷࣥࣄΛޏ͏ʹ Jenkinsfile ͕ඞਢ • https://jenkins.io/doc/book/pipeline/syntax/ ࣥࣄޏ༻ ϚχϡΞϧ
ϊʔυͷཧ
ϊʔυͷཧ2ύλʔϯ • Docker Pipeline plugin • jenkinsci/jnlp-slave Docker Πϝʔδ
Docker Pipeline plugin • JenkinsfileͰϏϧυΛ࣮ߦ͍ͨ͠ docker image Λࢦఆ͢ Δ •
Jenkinsίϯςφͱಉ͡ docker.sock Λ͏Α͏ઃఆ͢Ε ɺJenkinsίϯςφࣗମ৮ΕΔ • ༡ͼϙΠϯτ • ྫɿࣥࣄةػҰήʔϜ
jenkinsci/jnlp-slave • ϊʔυ༻ίϯςφΛىಈ͠JenkinsʹJNLPͰଓ͢Δ • ࣥࣄΛαϙʔτ͢ΔϝΠυతଘࡏ • େྔʹ༻ҙͯ͠ϝΠυୂΛ࡞Δͷ͕Φεεϝ • δϣϒͷϏϧυDocker PipelineͰࣄΓΔͷͰɺ
ϝΠυ͞Μͱ༡Ϳ͜ͱʹूத͢Δ͜ͱ
jenkinsci/jnlp-slave • *.override ͷػೳΛͬͯɺࣄલʹϊʔυͷใΛ Jenkinsʹ༻ҙ͓ͯ͘͠ͱॳظߏஙΛ΄΅ࣗಈԽͰ͖Δ • secret τʔΫϯҰ࡞ΒΕͨΒ JENKINS_HOME ҎԼ
Λ࡞Γ͞ͳ͍ݶΓಉ͡ͳͷͰࣗಈԽͰ͖Δ • ॳճ͚ͩखಈͰొ͕ඞཁ • groovy ͰΰϦΰϦΕશࣗಈԽͰ͖Δؾ͕͢Δ
·ͱΊ
JenkinsΛͰ͖Δ͚ͩImmutableͯ͠Έͨ • DockerͱGitHubͱJenkinsfileͰ͋ΔఔImmutableʹͰ͖Δ • GroovyεΫϦϓτͰΰϦΰϦ͠ͳͯ͘ɺ Chef Ansible ͰΰϦΰϦ͠ͳͯ͘ɺ ΦϨΦϨεΫϦϓτͰΰϦΰϦ͠ͳͯ͘ɺ
͋Δఔɺ࠶ߏஙՄೳͳJenkinsڥ͕खʹೖΔ ɹ˞ ͨͩ͠ Docker ͷ͕ࣝඞཁ • Ͱ͖Δ͚ͩJenkinsຊମͷઃఆΛݮΒ͢ͷ͕େࣄ
FIN