「2015 新春 JJUG 特別企画 Jenkins まつり」に参加しました
http://jjug.doorkeeper.jp/events/19259
先に感想
- Oracle来たこと無い(あったかも。忘れた)と、どこ行っていいかわからんかった。
- スーツ率高め。7割ぐらい?
- Slack使ってる人がほとんど手が上がらなかったのが、ちょっと衝撃的。
- プラグインいっぱい。実運用する前に、プラグインテスト用の環境が欲しい。作ろう。
- UrbanCodeは、自分がエンタープライズじゃないからあんまり関係無い気がした。
- 川口さんの話は、最初何を話しているのかわかんなかった。ついていけてからは面白かった。
- 広い範囲を上手く自動化していきたい。
- 荷物だけあって、結局誰も来なかった席は何だったんだろう。
Javaユーザに贈るJenkins 25のTips
Jenkins実践入門書いた人
必須
- Gitプラグイン
Validated Mergeプラグイン(エンタープライズ限定) - Githubプラグイン
webhookでプッシュ。ポーリングじゃない。 - Gradleプラグイン
gradleラッパーでもできるけど、スレーブとか使うとき便利
コーディング中のやつ
- checkstyleプラグイン
- FindBugsプラグイン
- TaskScannerプラグイン
TODO / FIXMEを警告にしてくれる
ジョブの設定系
- JobConfigHistoryプラグイン
設定の変更履歴を見れる。
ビルド履歴にハンマーマークが出てくる。前回との設定の差分も見れる。
コンソールを見やすくする系
- Timestamper
コンソール出力にタイムスタンプを表示できる。経過時間も見れる。
自分色に染める
- Emotional Jenkinsプラグイン
Jenkinsおじさんが3变化する - chuck norrisプラグイン
チャックノリスさんに - GreenBallsプラグイン
青をグリーンに変えられる - Nested Viewプラグイン
パイプラインプラグイン使った時に、階層構造で表示出来る。
プラグインじゃないTips
- JUnitのテストレポート表示
JUnit互換で出力させると、Rspecの結果も表示できる。 - マルチ構成プロジェクト
Safariはmacだけ、とかをフィルターで出来る - パンくずメニューでショートカット
いろんなメニューが出てくる。 画面遷移を減らせる。 - コンソールにジャンプ
ビルド中の青いメーターをクリックすると、コンソール出力を見れる - safeRestart
/hostname/safeRestartにアクセスすると、再起動出来る
CIを制す
- Deployプラグイン
Glassfish / jboss / tomcat に対応 - Xvfbプラグイン
仮想ディスプレイで、Seleniumなどのブラウザテストが出来る - Build Pipeline Viewプラグイン
Jobの流れをGUIで見やすい - Promoted Buildsプラグイン
だれかが承認した場合のみ実行
3つの並列テストが全て通ったら、とか。 - Workflowプラグイン
一杯プラグインが入る。
Groovy DSLでジョブを書けるようになる。
スニペットもある。
CIを制したら
- Slackプラグイン
- Email-extプラグイン
メールの細かい宛先設定など。 - Disk Usage プラグイン
ディスクをいっぱい使ってると、使ってる感が見える。 - Monitoring
CPUとかメモリとかをモニタリング出来る。グラフで。
Jenkins実践入門は改訂予定のため、まだ電子化されない
継続的インテグレーションから継続的デリバリーへ
- エンタープライズを意識した話。
- 開発部門がさわれなかったり、上長の承認が必要だったり。。。
- 本:継続的インテグレーション入門、オライリーのJenkins
- 本:継続的デリバリー
- ツールの共有が難しい。Dev vs Ops。思いの違い。
- 組織が大きくなっていくと、分担・チェックが多くなる
- CI:ビルドジョブの組み合わせ→CD:環境毎
- CDの領域はDevとOpsが重なる
UrbanCodeの説明・デモ
- プッシュボタン・デプロイメント
- D&Dでフローを作れる
- 細分化したViewもある
- プラグインの活用
Jenkinsとの連携とか、メインフレームに対するデプロイとか
Groovyで書ける - 環境ごとのリリース状況を視覚的に見れる。どのバージョンが入っているかをみれる。
- 品質ゲートの設定
- リリース承認プロセスの定義
- リリース状況のリアルタイム確認
- ログインユーザに依る権限管理
Jenkinsとの違い
ビルドに焦点を当てているか、リリースに焦点を当てるか。
Chef/Puppet + Jenkinsによる継続的デリバリ
会社紹介
- CloudBees
- Jenkins Enterpriseなど、Jenkins周りの開発・サポートなど
背景
- より広域なend-to-endの自動化
- jenkins-ci.org 運用上のニーズ
個々のサービスをコンテナ化
サンプル。 https://github.com/jenkins-infra Puppetの中の人のベストプラクティスが詰まっている。
- git -> Jenkins -> docker
- jenkins-infra/ircbotとか
- rspec-puppetによるプルリクエストの検証
- serverspecによる一時サーバでの検証
- vagrantに適用してみる。EC2でやっている。EC2でやることで、並列に高速に実行できる。
- Vagrantfileに書いてある。
- 今はmasterに対してだけやっている。金があれば、Pull Request単位でもいいんじゃないか。
- r10k + puppet enterprise
- ブランチ名=環境名になる。
- 環境別の際を吸収するHiera
- 階層構造も自由に出来る -> yamlファイルに外出し
- 鍵・秘密の情報の取り扱い
- dockerのpackageに入れなくていい
- hiera-eyaml でパラメータの個別暗号化。eyamlというエディタで変更 -> 保存すると暗号化。鍵は別に保存しておく必要がある。
- ブランチと環境の関係
- Pull Requestをマージすると、自動的に本番に反映される、とか。
ビルド履歴がGitHub上に残る。
- Pull Requestをマージすると、自動的に本番に反映される、とか。
継続的デリバリの課題
- 実際にいつ起こったのか
- 現在のサーバで走っているのはどのビルドか
ファイル指紋
- md5 check sum。
- 自動的に指紋を取る
- テストとビルドが関連づいていなくても、追える
- デモ
- Jenkinsでビルド -> 手動でデプロイ(デプロイ結果をJenkinsに通知) -> Jenkinsでテスト
- Promotionプラグインを入れておくと、デプロイされたことが星印で出てくる
- いつ・なにが・どこにデプロイされたのかを確認できる
- Chefとpuppertにしか対応してないけど、拡張可能な形式で作ってある
- Chefはカスタムレポートハンドラーとして実装
今後の予定
- データの可視化
- ファイルじゃないのもの指紋
- jenkins-ci.orgの運用でも使っていく