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環境運用に関するSWETとしての取り組み
Search
Hisashi.Iguchi
January 31, 2020
Technology
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Jenkins環境運用に関するSWETとしての取り組み
Hisashi.Iguchi
January 31, 2020
More Decks by Hisashi.Iguchi
See All by Hisashi.Iguchi
Jenkins PipelineでのShared Librariesの活用
hisa9chi
0
1.2k
EC2 Mac インスタンスに入門してみた
hisa9chi
0
1.6k
20200805_Server版を見捨てないで_Cloud版の機能欲しいんです_.pdf
hisa9chi
0
430
MacStadium使ってみた
hisa9chi
1
2.9k
サポートは強力な味方
hisa9chi
2
550
Bitriseの社内提供へ
hisa9chi
6
6.7k
CircleCI first-step
hisa9chi
2
1.8k
Other Decks in Technology
See All in Technology
Webとヘルスデータ
yukukotani
0
170
プロダクト思考 × 基盤思考を AIで実現する Compound Engineering
tkc66buzz
1
260
振り返りこそエンジニアの本領
negima
0
280
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
0
180
Jetpack Compose で挑む新聞紙面UI ─ 複合ジェスチャー・ポリゴン記事領域・適応的ページ構成という3つの壁/droidkaigi2026
nikkei_engineer_recruiting
0
190
【Oracle AI Spotlight ウェビナー】AWSか、Azureか、Google Cloudか。その議論にオラクルを含める意義。
oracle4engineer
PRO
2
230
【試作】IoT x AIエージェント
happysamurai294
0
120
Level Up Your CDK DX: 5 Tools I’ve Been Building
gotok365
2
190
本番に近いテストをもっと手軽に - Postmanで広がるAPIテストの世界 / Expanding the World of API Testing with Postman
yokawasa
1
250
Genie Code ワークショップ 基礎編 / Genie-Code-Workshop-fundamental
databricksjapan
PRO
0
350
AI時代のAPI品質を支えるガードレール / API Guardrails for API quality in the AI era
yokawasa
1
110
IoTハンズオンの舞台裏
shirouz
2
120
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
How to Talk to Developers About Accessibility
jct
2
540
Rails Girls Zürich Keynote
gr2m
96
14k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
330
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
310
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Statistics for Hackers
jakevdp
799
230k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
370
Believing is Seeing
oripsolob
1
210
YesSQL, Process and Tooling at Scale
rocio
174
15k
Visualization
eitanlees
152
17k
Transcript
Jenkins 2'06:3< SWET # 7 GDM vol.40 %")! Jenkins
0,:3@DeNA Fri. Jan. 31, 2020 $ +* .; &98-; &951; SWET /(!4
*) • $ • 1Hisashi Iguchi2@hisa9chi • •
#( SWET Gr. • • * /' • CI/CD %&.0-!+," • % • CircleCI Japan User Group Community Leaders 2
3 SWET Jenkins SWET 1 4
2 3
4 SWET Jenkins SWET 1 4
2 3
SoftWare Engineer in Test c.f.> Google SET
5 4 3 2 1
6 MISSION 1) • DeNA#/ %0$ • DeNA 2-+,&$
!"*.(' VISION MAKE TESTING FUN, SMART, AND DELIGHTING END-USERS 4 3 2 1
Make Testing Fun, Smart, and Delighting End-Users • Fun •
'2&# • Smart • .-9 * 15/7 • "( !)1 48 • Delighting End-Users • ' $(% 3 ,:60' +) 7 4 3 2 1
8 ! ! https://swet.dena.com/about 4 3 2 1
9 SWET Jenkins SWET 1 4
2 3
• • iOS • Android • OS
• Linux (Ubuntu) • macOS • • Unity 10 1 4 3 2
Jenkins *4 • :! "%51+/6 • &#-8(3 •
$7.'3 • *4&$ • Xcode 4 $ • iOS,0)3 macOS "%/6 • &#%% Unity *4 • Unity Cloud Build 7.9 62%" 11 1 4 3 2
Jenkins ', • &', • +& • '$ •
& master '$! • macOS () 12 1 4 3 2 Jenkins master -*"% .#
Jenkins 37 • .> • & 1 .)37 •
45!&.= • ,:'% &'% • Jenkins / Xcode / Unity / Android NDK • %# (-)(6; • /+9 % • Jenkins 378?9 or 18?9 13 1 4 3 2 "3-8?9 $& or <2*0
Jenkins E< • $!,2 #'' • 1A "' F0,2 •
&*>/8 • C ,2 • . plugin ')& • slave #'' • 6 1A )&3-')& • $! %)=;7 SSH4? D9(B: • slave @+5G 14 1 4 3 2
Jenkins ! • slave • " •
" • # • ! • " 15 1 4 3 2 Jenkins master macOS agent Jenkins master macOS agent Jenkins master macOS agent macOS agent !
16 1 4 3
2
U :Z • +"/Q2WK!$'D • master / slave /*.
• MT9KAN5KB @S • Jenkins plugin OJ • #,)OJ;Y • Jenkinsfile G$&- WebUI#,)3C • Plugin =6 >HOJ9P ?7 • 4#,)I 8K1F • XL(0%VR #,)E< OJ;Y 17 1 4 3 2
D ,G • slave 9=.3> • " 5F#&C: slave 7B&$%&$
• " 7BE*8<1 slave +( 18 1 4 3 2 Jenkins master macOS agent macOS agent !%% !%%; ?'4/ <1 slave +(" A60- 2@)
D 1H • slave E.9" • $#'0 ,47/"2G • 8F=
slave <3?)65@(&;- 5@ • *A 19 1 4 3 2 Jenkins master macOS agent macOS agent ① C: macOS agent ② " ③ %!/+>B
B 'G • 04'G • Jenkins ,/7 !( 78
E; • Jenkins master / slave "2.D <9 • =$ -3)61 "F • =$: %B& • A?'G • 'G • F5*C'G • *C >8# +@ 20 1 4 3 2
21 SWET ! 1 4
3 2
22 SWET Jenkins SWET 1 4
2 3
!. 1. Jenkins )% • master / slave )%$/ •
master / slave(Linux) cloud *+ 2. 1 • Jenkins master 1 • slave 1)-4Linux / macOS5 • ,3#( 3. & • Unity + iOS / Android & 23 1 2 4 3 2' *+"0
24 1. Jenkins 1 2 4 3
Jenkins • • master - slave slave
25 1 2 4 3 macOS agent Linux agent Jenkins master macOS agent Persistent Disk GCP JNLP
Jenkins " • • master - slave 'slave#( 26
1 2 4 3 ! JNLP macOS agent macOS agent ! %&$ Jenkins master Persistent Disk Linux agent GCP
Jenkins • • master - slave slave 27
1 2 4 3 Linux agent Jenkins master Persistent Disk GCP JNLP macOS agent macOS agent OS update
Jenkins • • master - slave slave
28 1 2 4 3 macOS agent Linux agent Jenkins master macOS agent Persistent Disk GCP JNLP
Jenkins • • master - slave #slave
$ 29 1 2 4 3 macOS agent Linux agent Jenkins master macOS agent Persistent Disk GCP JNL P " !
30 " # ! 1 2
4 3
31 2. 1 2 4 3
master ' % • • ubuntu: GCP Terraform
# • Jenkins • Ansible • # • https://github.com/Kuniwak/jenkins-plugin-fixator "# • $(# influxDB / Telegraf / Chronograf / Kapacitor • / • GCP !&"# 32 1 2 4 3
slave /!%- • # • macOS: &' mac
mini *3. • ubuntu: GCP Terraform (# • • Ansible • +"1 • Unity / Xcode / Android NDK 0$ • slave ,' • )2( Telegraf 33 1 2 4 3
slave /!%- • # • macOS: &' mac
mini *3. • ubuntu: GCP Terraform (# • • Ansible • +"1 • Unity / Xcode / Android NDK 0$ • slave ,' • )2( Telegraf 34 1 2 4 3 # for rbenv role install_ruby_versions: - 2.4.5 - 2.5.1 - 2.6.1 global_ruby_version: 2.5.1 # for xcode role xcode_clean: true xcode_versions: - '10.1' default_xcode_version: '10.1' # for android role android_versions: - 25 - 26 - 27 - 28 build_tools_versions: - 25.0.3 - 26.0.2 - 27.0.3 - 28.0.3 # for unity role unity_versions: - 2018.3.3f1 # for jenkins_slave jenkins_slave_name: 'o-12778-mac' jenkins_slave_secret: !vault | $ANSIBLE_VAULT;1.1;AES256 3932356633663834333631663634353731656
slave #' • ) • +! ,
) • *"% *( • https://plugins.jenkins.io/app-detector $& 35 1 2 4 3
slave IA • $" 9G#$"$ • ?C; *A Ansible 2F
• slave B@#$"!<9(2F • #$"!<946%/E 10 • 8,#$" -> &>'3 #- • 5 Ansible .: • D746 =) Ansible H+ 36 1 2 4 3
37 3. 1 2 4 3
Jenkins pipeline % #!/' • "#% #! • %
#*9 3-2)56 • +8 0 .172)56 • (;4: Jenkins Shared Library /' • "<,& $& 38 1 2 4 3
39 Jenkins 1 2 4
3
40 1 2 4 3
41 1 2 4 3
42 TASK [xcode : Install Xcode (NOTE: This task take
a long time. And, it doesn‘t work when Two-Factor Authentication is enable. If you want to check progress, do `sudo tail -f /private/var/root/Library/Caches/XcodeInstall/progress.*`)] *** failed: [unity-macos-1014] (item=11.1) => changed=true cmd: - /var/root/.gem/ruby/2.5.0/bin/xcversion - install - ’11.1’ delta: ‘0:14:18.084891’ end: ‘2019-12-15 20:05:30.908344’ item: ‘11.1’ msg: non-zero return code 1 2 4 3
Ansible Playbook !/' • Xcode Unity ! ! • Xcode
• !$, xcode-install 0' • !.#)* • Unity • !(+ • !1 Unity Hub (+ • !! • brew java8 % ruby !"&- 43 1 2 4 3
44 CI 1 2 4 3
Ansible Playbook &" • OS Vagrant Box( )
• '$ • Test Kitchen ! • -> Ansible Playbook $ -> % # $ 45 1 2 4 3
46 SWET Jenkins SWET 1 4
2 3
) 1. ( 1. %& 2. Jenkins
CI*" 2. +' $ !# 47 1 2 3 4
48 1. 1 2 3 4
1 2 3 #47 • # ,< 30 • macOS
?56" # 47 • MacStadium • CI# 47 • Jenkins % # 47 • Bitirse • !# Unity #=8 +;@ https://blog.bitrise.io/bitrise-in-2019-a-roadmap-preview .: /-1& *($ • CircleCI • #' >92)47,< 49 4
Jenkins 50 macOS agent Linux agent Jenkins master
macOS agent GCS GCP MacStadium macOS agent 1 2 3 4 macOS agent macOS agent Linux agent Cloud CI Bitrise CircleCI
Jenkins 51 Linux agent Jenkins master GCS GCP
MacStadium macOS agent 1 2 3 4 macOS agent macOS agent Linux agent Cloud CI Bitrise CircleCI macOS agent macOS agent PR
Jenkins 52 macOS agent Linux agent Jenkins master macOS
agent GCS GCP 1 2 3 4 Linux agent Cloud CI Bitrise CircleCI MacStadium macOS agent macOS agent macOS agent cron
Jenkins 53 macOS agent Linux agent Jenkins master macOS
agent GCS GCP MacStadium macOS agent 1 2 3 4 macOS agent macOS agent Linux agent Cloud CI Bitrise CircleCI
Jenkins 54 macOS agent Linux agent Jenkins master
macOS agent GCS GCP MacStadium macOS agent 1 2 3 4 macOS agent macOS agent Linux agent Cloud CI Bitrise CircleCI
55 2. 1 2 3 4
1 2 3 CI>/ C9JE67D,K • #' "): C9 5G-
• #'#H@") • Unity Cloud Build Bitrise % )!,1 82 • !& 4I) 0 • αβH@") • % )!<=>/*3;?82 • F?") • % )!<=>/*3;?82 • $( +BH@.A82 56 4
57
• .(OH P0 Jenkins B<K7BJ • Terraform /
Ansible DG • macOS 28 GCP/ BJ • Jenkins B< ?6DG4 -&,)% =5 • BJG +&"*.>@AI • CI 73AM • 1:*#.$ DG .*$+!Q • N9;L -> EF'- • N9 C -> *#.$ 58
59 End.