Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Jenkins 2.0 Pipeline & Blue Ocean

7,219 views

Published on

Workflow Engines Meetup #1
https://connpass.com/event/50900/

Published in: Technology
  • Be the first to comment

Jenkins 2.0 Pipeline & Blue Ocean

  1. 1. Jenkins 2.0 Pipeline & Blue Ocean Workflow Engine Meetup #1 @hico_horiuchi
  2. 2. 自己紹介 堀内 晨彦 (Akihiko Horiuchi) 香川大学 工学部 情報系学科 院卒 Emacs, Ruby, Hubot, Sensu, Ansible, Go http://bit.ly/hiconyan NTTコミュニケーションズで ベアメタルクラウド の開発をしています Jenkins と Ansible によるデプロイの自動化 RHEL 7.3 と CentOS 7.3の検証と実装 2
  3. 3. もくじ 今日はこんな感じのことを喋ります Jenkins のおさらい Pipeline と Blue Ocean デモンストレーション チームでの 活用事例 3
  4. 4. Jenkinsのおさらい -
  5. 5. Jenkinsとは 何でもできる英国の執事 https://jenkins.io Java製のオープンソース CI / CDツール 2011年に Hudson からフォークされた ジョブは ShellScript や Groovy で記述 プラグイン による機能の追加や拡張 ビルド テスト デプロイ を自動化 開発サイクルをスピードアップ 5
  6. 6. Jenkinsオジサン 柔軟性 がありすぎて何でもできる Jenkins職人 と呼ばれることも ジョブの作成が 属人化 する ジョブの 依存関係 が複雑になる 実行環境 に何が入っているか不明 バージョンアップ すると動かない Pipeline で簡略化 BlueOcean で可視化 Jenkins でバージョンを管理 6
  7. 7. PipelineとBlue Ocean -
  8. 8. Pipeline Plugin https://jenkins.io/doc/book/pipeline/ DSL(Groovy) で簡単にジョブを定義 条件分岐 や 例外処理 や 並列実行 もできる Jenkinsfile を書いてリポジトリに入れておく ブランチごと に自動でジョブを作ってくれる 8
  9. 9. Pipeline Syntax pipeline { stages { stage('build') { steps { sh 'make' } } } } stage : ビルドやテストなどワークフローの段階 steps : 具体的な処理(コマンドの実行など) 他にも環境変数を設定する environment や タイムアウトやリトライを設定する options がある 9
  10. 10. 条件分岐と例外処理 masterブランチの場合はデプロイする when { branch 'production' } sh 'make build' } 結果に関わらず最後にクリーンアップする try { sh 'make' } finally { sh 'make clean' } 10
  11. 11. Blue Ocean Plugin https://jenkins.io/projects/blueocean/ Introducing Blue Ocean JenkinsのUXを オサレ にする取り組み Pipelineの手順や状態を 可視化 お気に入りを集めた個人用の ダッシュボード Design Language で統一性のあるUI 11
  12. 12. デモンストレーション -
  13. 13. デモ環境の紹介 https://github.com/hico-horiuchi/jedi-ansible Ansible を使って、Docker コンテナを起動 Pipeline でデプロイのワークフローを実装 GitHubからリポジトリをクローン Dockerをインストール WebサーバとLBのコンテナを起動 監視と可視化ツールのコンテナを起動 Serverspecで正常性を確認 これを Jenkins から ワンクリック で実行します ジョブを 並列実行 して 高速化 してみました 16
  14. 14. Jenkinsfile node { stage 'checkout' git url: 'git://github.com/hico-horiuchi/jedi-ansible.git' sh 'cp hosts_samples/hosts.jedi hosts' ... stage 'web' parallel 'clone': { node { sh 'ansible-playbook -i hosts -t clone site.yml' } }, 'nginx': { node { sh 'ansible-playbook -i hosts -t nginx site.yml' } } ... stage 'serverspec' sh 'bundle install' sh 'bundle exec rake serverspec:all' } 18
  15. 15. チームでの活用事例 -
  16. 16. Jenkinsの使い所 いろんなところでJenkinsに頼っています GitHubと連携してテストを実行 (Ansibleで環境構築してRSpecを実行) ワークフローでデプロイを自動化 (Blue-Green Deploymentを実施) 死活監視・外形監視とアラートの通知 (Consulで両系断を監視、Slackに通知) インタフェースの統一、ノウハウの共有 不得意でも、あれもこれもJenkins 20
  17. 17. Jenkins 2.0に移行したい Multijob → Pipeline ジョブの構成や依存関係が複雑になりやすい GUIの使い勝手が悪い(リンクの繰り返し) Job Builder → Jenkinsfile テンプレート展開の嵐(Jinja、ERB) コードとジョブを一緒に管理したい アップデートしてハッピーJenkinsライフ 21
  18. 18. ありがとうございました Jenkins 2.0使ってみて下さい! -

×