- ベアメタルクラウド
アジェンダ
- おさらい
- 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に流し込む
- テンプレート展開の嵐 可読性よくない
- ジョブのリポジトリとコードのリポジトリが分かれている→コードとジョブを一緒に管理したい