Slide 1

Slide 1 text

։ൃऀ(ݸਓ)ͷͨΊͷ Jenkins ӡ༻ฤ @yasuhiroki

Slide 2

Slide 2 text

@yasuhiroki

Slide 3

Slide 3 text

https://certificates.cloudbees.com/10203903

Slide 4

Slide 4 text

։ൃऀ(ݸਓ)ͷͨΊͷJenkins

Slide 5

Slide 5 text

ࢲͷࢲʹΑΔࢲͷͨΊͷJenkins • ผʹࣗ෼Ͱ΍ͬͯ΋ྑ͍Μ͚ͩͲɺ
 ୅ΘΓʹ΍ͬͯ͘ΕΔͳΒॿ͔Δ࡞ۀ • ۀ຿ͱͯࣗ͠ಈԽ͢Δ΄ͲͰ΋ͳ͍͚Ͳɺ
 ࣗಈԽͤͣʹ͸͍ΒΕͳ͔ͬͨ࡞ۀ • ༡ͼ

Slide 6

Slide 6 text

޾ͤͳੜ׆ ࠓ೔͸ૉ਺͔ɺφϕΞπ͔Λڭ͑ͯ͘ΕΔࣥࣄ

Slide 7

Slide 7 text

ࣥࣄޏ༻ܭը

Slide 8

Slide 8 text

ࣥࣄ͸࢖͍ࣺͯ

Slide 9

Slide 9 text

ඞཁͳ࣌ʹޏ͍
 ඞཁͷͳ͍࣌͸ղޏ͢Δ

Slide 10

Slide 10 text

Jenkinsͷߏங

Slide 11

Slide 11 text

ࢲͷͨΊͷJenkins͔ͩΒ
 ࢲͷ޷͖ͳΑ͏ʹߏங͢Δ

Slide 12

Slide 12 text

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 ΋͋Δ

Slide 13

Slide 13 text

Jenkinsͷߏங͸GitHubͰ؅ཧ • docker-compose • docker-compose.yml Λ GitHub Ͱ؅ཧ

Slide 14

Slide 14 text

ΧελϚΠζ͸DockerfileͰ • Dockerfile • ࢲͷͨΊͷJenkinsͷॳظߏங • ࣗ෼༻ͷ Docker ΠϝʔδΛ DockerHub ʹ push ͯ͠΋ྑ͍ • ࣗ෼ͷࣥࣄ͕ଞॴͰಇ͍ͯ΋ࣧౄ͠ͳ͍ਓʹݶΔ • ͋Β͔͡Ί༻ҙ͞Ε͍ͯΔػೳΛ࢖͑͹ɺ
 DockerΠϝʔδΛ༻ҙ͠ͳͯ͘΋͋Δఔ౓ಈతʹߏஙͰ͖Δ

Slide 15

Slide 15 text

*.override • ެࣜJenkins Docker ͷػೳ • config.xml.override ͳͲͱ༻ҙͨ͠ϑΝΠϧͰɺίϯς φىಈ࣌ʹݩͷϑΝΠϧʹ্ॻ͖͢Δ • ڧͯ͘χϡʔήʔϜͰ͖Δ

Slide 16

Slide 16 text

install-plugin.sh • ެࣜJenkins Docker ͷػೳ • Πϯετʔϧ͍ͨ͠ plugin ͷҰཡΛॻ͍ͨϑΝΠϧΛ৯ ΘͤΔͱɺίϯςφىಈ࣌ʹ ґଘ͢Δ plugin ΋ؚΊͯΠ ϯετʔϧͯ͘͠ΕΔ • όʔδϣϯࢦఆ΋Մೳ

Slide 17

Slide 17 text

-Djenkins.install.runSetupWizard=false • Jenkinsىಈ࣌ʹ౉͢JAVA_OPT • ॳճىಈ࣌ʹग़ͯ͘ΔɺΦεεϝϓϥάΠϯͷΠϯετʔ ϧ΍ηΩϡϦςΟઃఆͳͲΛεΩοϓͰ͖Δ • ࢲͷࢲʹΑΔࢲͷͨΊͷJenkinsʹ͸ෆཁͳͷͰઃఆ͢Δ

Slide 18

Slide 18 text

Jenkinsδϣϒͷ؅ཧ

Slide 19

Slide 19 text

ࢲͷͨΊͷJenkins͔ͩΒ
 ࢲ͕ϝϯςͰ͖Ε͹͍͍

Slide 20

Slide 20 text

GitHub Organization Plugin • Multibranch Pipeline ͷ GitHub ಛԽ൛ • ࣗ෼ͷΞΧ΢ϯτΛࢦఆ͢Δ͚ͩͰɺJenkinsfile Λ࣋ͭ ϦϙδτϦΛݕग़ͯ͠উखʹϏϧυͯ͘͠ΕΔ • ࠓճ͸ https://github.com/yasuhiroki/myJenkinsfile ͚ͩ Λݕग़͢ΔΑ͏ʹઃఆ

Slide 21

Slide 21 text

δϣϒ = ϒϥϯν • jobs/* ͱ͍͏໊લͷϒϥϯν͕ɺJenkinsͷδϣϒʹͳΔ Α͏ઃఆ͢Δ • jobs/sendo, jobs/today-is ͳͲɺδϣϒຖʹϒϥϯνΛ࡞ Δ

Slide 22

Slide 22 text

git worktree ίϚϯυ • δϣϒ͝ͱʹ͍͍ͪͪ checkout ͢Δͷ͸໘౗ͳͷͰɺ
 git worktree ίϚϯυΛར༻͢Δ • git worktree add jobs/today-is jobs/today-is ͱ͢Δͱɺ
 jobs/today-is σΟϨΫτϦʹ jobs/today-is ϒϥϯν͕ νΣοΫΞ΢τ͞ΕΔ • ϒϥϯνͷ਺͚ͩσΟϨΫτϦΛ࡞ͬͯ checkout ͢Ε͹ɺ
 δϣϒͷઃఆ͕ू·ͬͨ jobs σΟϨΫτϦͷͰ͖͕͋Γ

Slide 23

Slide 23 text

Jenkinsfile • ࢲͷͨΊͷࣥࣄΛޏ͏ʹ͸ Jenkinsfile ͕ඞਢ • https://jenkins.io/doc/book/pipeline/syntax/ ͸ࣥࣄޏ༻ ϚχϡΞϧ

Slide 24

Slide 24 text

ϊʔυͷ؅ཧ

Slide 25

Slide 25 text

ϊʔυͷ؅ཧ͸2ύλʔϯ • Docker Pipeline plugin • jenkinsci/jnlp-slave Docker Πϝʔδ

Slide 26

Slide 26 text

Docker Pipeline plugin • JenkinsfileͰϏϧυΛ࣮ߦ͍ͨ͠ docker image Λࢦఆ͢ Δ • Jenkinsίϯςφͱಉ͡ docker.sock Λ࢖͏Α͏ઃఆ͢Ε ͹ɺJenkinsίϯςφࣗମ΋৮ΕΔ • ༡ͼϙΠϯτ • ྫɿࣥࣄةػҰ൅ήʔϜ

Slide 27

Slide 27 text

jenkinsci/jnlp-slave • ϊʔυ༻ίϯςφΛىಈ͠JenkinsʹJNLPͰ઀ଓ͢Δ • ࣥࣄΛαϙʔτ͢ΔϝΠυతଘࡏ • େྔʹ༻ҙͯ͠ϝΠυୂΛ࡞Δͷ͕Φεεϝ • δϣϒͷϏϧυ͸Docker PipelineͰࣄ଍ΓΔͷͰɺ
 ϝΠυ͞Μͱ༡Ϳ͜ͱʹूத͢Δ͜ͱ

Slide 28

Slide 28 text

jenkinsci/jnlp-slave • *.override ͷػೳΛ࢖ͬͯɺࣄલʹϊʔυͷ৘ใΛ Jenkinsʹ༻ҙ͓ͯ͘͠ͱॳظߏஙΛ΄΅ࣗಈԽͰ͖Δ • secret τʔΫϯ͸Ұ౓࡞ΒΕͨΒ JENKINS_HOME ҎԼ Λ࡞Γ௚͞ͳ͍ݶΓಉ͡ͳͷͰࣗಈԽͰ͖Δ • ॳճ͚ͩ͸खಈͰొ࿥͕ඞཁ • groovy ͰΰϦΰϦ΍Ε͹׬શࣗಈԽͰ͖Δؾ͕͢Δ

Slide 29

Slide 29 text

·ͱΊ

Slide 30

Slide 30 text

JenkinsΛͰ͖Δ͚ͩImmutableͯ͠Έͨ • DockerͱGitHubͱJenkinsfileͰ͋Δఔ౓ImmutableʹͰ͖Δ • GroovyεΫϦϓτͰΰϦΰϦ͠ͳͯ͘΋ɺ
 Chef ΍ Ansible ͰΰϦΰϦ͠ͳͯ͘΋ɺ
 ΦϨΦϨεΫϦϓτͰΰϦΰϦ͠ͳͯ͘΋ɺ
 ͋Δఔ౓ɺ࠶ߏஙՄೳͳJenkins؀ڥ͕खʹೖΔ
 ɹ˞ ͨͩ͠ Docker ͷ஌͕ࣝඞཁ • Ͱ͖Δ͚ͩJenkinsຊମͷઃఆΛݮΒ͢ͷ͕େࣄ

Slide 31

Slide 31 text

FIN