Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Jenkins環境運用に関するSWETとしての取り組み

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 Jenkins環境運用に関するSWETとしての取り組み

Avatar for Hisashi.Iguchi

Hisashi.Iguchi

January 31, 2020
Tweet

More Decks by Hisashi.Iguchi

Other Decks in Technology

Transcript

  1. Jenkins 2'06:3< SWET # 7 GDM vol.40  %")! Jenkins

    0,:3@DeNA Fri. Jan. 31, 2020 $ +* .; &98-; &951; SWET /(!4
  2. *) • $ •  1Hisashi Iguchi2@hisa9chi •  •

    #(    SWET Gr. •  • * /'   • CI/CD %&.0-!+," • % • CircleCI Japan User Group Community Leaders 2
  3. 6 MISSION 1)  • DeNA#/ %0$ • DeNA 2-+,&$

    !"*.('    VISION MAKE TESTING FUN, SMART, AND DELIGHTING END-USERS 4 3 2 1
  4. 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
  5.   •  • iOS • Android • OS

    • Linux (Ubuntu) • macOS •    • Unity 10 1 4 3 2
  6.  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
  7. Jenkins ', • &', •  +& • '$ •

    & master  '$! • macOS ()  12 1 4 3 2 Jenkins master -*"% .#
  8. 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
  9. 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
  10. Jenkins ! • slave   • "  •

    " • # • !  • " 15 1 4 3 2 Jenkins master macOS agent Jenkins master  macOS agent Jenkins master macOS agent macOS agent !
  11. 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
  12. 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@)
  13. 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
  14. 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
  15. !. 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
  16. Jenkins  •  • master - slave slave 

    25 1 2 4 3 macOS agent Linux agent Jenkins master macOS agent Persistent Disk GCP  JNLP 
  17. Jenkins " •  • master - slave 'slave#( 26

    1 2 4 3 ! JNLP macOS agent macOS agent !     %&$ Jenkins master Persistent Disk  Linux agent GCP
  18. Jenkins  •  • master - slave slave 27

    1 2 4 3 Linux agent Jenkins master Persistent Disk GCP  JNLP  macOS agent macOS agent   OS update 
  19. Jenkins  •  • master - slave slave 

    28 1 2 4 3 macOS agent Linux agent Jenkins master macOS agent Persistent Disk GCP  JNLP 
  20. Jenkins   •  • master - slave #slave

    $ 29 1 2 4 3 macOS agent Linux agent Jenkins master macOS agent Persistent Disk GCP  JNL P  "    !
  21. master ' % •   • ubuntu: GCP Terraform

    # • Jenkins    • Ansible    • #  • https://github.com/Kuniwak/jenkins-plugin-fixator "# • $(# influxDB / Telegraf / Chronograf / Kapacitor •    /   • GCP     !&"# 32 1 2 4 3
  22. slave /!%- •  # • macOS: &'  mac

    mini *3. • ubuntu: GCP Terraform (# •   • Ansible   • +"1 • Unity / Xcode / Android NDK 0$  •  slave ,' • )2( Telegraf   33 1 2 4 3
  23. 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
  24. slave #' • ) • +!    ,

    ) • *"%  *( • https://plugins.jenkins.io/app-detector $& 35 1 2 4 3
  25. 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
  26. Jenkins pipeline % #!/' •  "#% #! • %

    #*9 3-2)56 • +8 0 .172)56  • (;4: Jenkins Shared Library  /' •  "<,& $& 38 1 2 4 3
  27. 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   
  28. Ansible Playbook !/' • Xcode Unity ! ! • Xcode

    • !$, xcode-install 0' •  !.#)* • Unity •  !(+ • !1 Unity Hub (+ • !!  • brew  java8 % ruby  !"&- 43 1 2 4 3
  29. Ansible Playbook &" • OS Vagrant Box(  ) 

    •      '$ • Test Kitchen ! •   -> Ansible Playbook $ -> % #  $ 45 1 2 4 3
  30.  ) 1.  ( 1.  %& 2. Jenkins

     CI*" 2. +' $ !# 47 1 2 3 4
  31. 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
  32. 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
  33. 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 
  34. 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   
  35. 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  
  36. 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
  37. 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
  38.   • .(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