Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Jenkins 2.0 Pipeline & Blue Ocean

8.408 visualizaciones

Publicado el

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

Publicado en: Tecnología
  • Sé el primero en comentar

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使ってみて下さい! -

×