by shigemk2

当面は技術的なことしか書かない

memo: Jenkins 2.0 Pipeline & Blue Ocean #wfemeetup

  • ベアメタルクラウド

アジェンダ

  • おさらい
  • Pipeline / Blue Ocean(Jenkins2.0から)
  • デモ
  • 活用事例

おさらい

  • Java製のCI/CDツール
  • Hudsonからフォークされた(2011)
  • ジョブはshell script / Groovyで記述
  • 豊富なプラグイン

  • ビルド/テスト/デプロイの自動化

  • 開発サイクルの高速化

Jenkinsおじさん

  • 柔軟性がありすぎてなんでもできる
  • ジョブの運用作成の属人化
  • 依存関係が複雑になりがち
  • 実行環境が再現しにくい
  • バージョンアップするとプラグインが動かない

解決策

  • Pipelieで簡略化
  • BlueOceanで可視化
  • Jenkinsでバージョン管理

Pipeline / Blue Ocean

Pipeline Plugin

  • DSLで定義
  • 条件分岐/例外処理/並列実行を書ける
  • Jenkinsfileでリポジトリに含めておく
  • ブランチごとに自動でジョブを作ってくれる

各種DSL文法

  • ステップ step
  • 環境変数設定 environment
  • タイムアウトやリトライを設定 option
  • when
  • try/finally

  • シェル芸やGroovyに頼らなくても良くなる

  • Jenkinsfileを作る

Blue Ocean Plugin

  • JenkinsのUI/UXをおしゃれにする仕組み
    • Pipelineのすぐあとに出た
  • Pipeline
    • 手順や状態の可視化
    • 個人用ダッシュボードの作成
    • Design Languageで統一性のあるUI
    • bootstrapぽい React.jsで実装されている

よいこと

  • デプロイ処理の可視化
  • 失敗処理の可視化

デモ

https://github.com/hico-horiuchi/jedi-ansible

  • GitHubからクローン
  • Dockerインストール
  • WebサーバとLBのコンテナを起動
  • 監視と可視化ツールのコンテナを起動
  • Serverspecで正常性を確認

  • 並列化と直列実行の組み合わせ

  • Jenkinsfileで書く

  • デモが動かなかった

  • 進捗や結果を可視化できちゃう

  • PipelineエディタでワークフローをGUI上で作れる

チームでの活用事例

  • いろいろなところでJenkinsを使える
  • NTTなのにEnterpriseではないGitHubを使っている
  • デプロイ自動化
  • 死活監視/外形監視とアラートの通知
  • Consulで監視、Slackで通知

  • インターフェイスを統一すること

Jenkins2.0に移行したい

  • Multijob
    • ジョブの校正や依存関係が複雑になりやすい
    • GUIの使い勝手が悪い(リンクの繰り返し)
  • Job Builder
    • YAMLで書いたものをJenkinsに流し込む
    • テンプレート展開の嵐 可読性よくない
    • ジョブのリポジトリとコードのリポジトリが分かれている→コードとジョブを一緒に管理したい