「2015 新春 JJUG 特別企画 Jenkins まつり」に参加しました

http://jjug.doorkeeper.jp/events/19259

先に感想

  • Oracle来たこと無い(あったかも。忘れた)と、どこ行っていいかわからんかった。
  • スーツ率高め。7割ぐらい?
  • Slack使ってる人がほとんど手が上がらなかったのが、ちょっと衝撃的。
  • プラグインいっぱい。実運用する前に、プラグインテスト用の環境が欲しい。作ろう。
  • UrbanCodeは、自分がエンタープライズじゃないからあんまり関係無い気がした。
  • 川口さんの話は、最初何を話しているのかわかんなかった。ついていけてからは面白かった。
    • 広い範囲を上手く自動化していきたい。
  • 荷物だけあって、結局誰も来なかった席は何だったんだろう。

Javaユーザに贈るJenkins 25のTips

Javaユーザに贈るjenkins 25のTips

Jenkins実践入門書いた人

必須

コーディング中のやつ

ジョブの設定系

  • JobConfigHistoryプラグイン
    設定の変更履歴を見れる。
    ビルド履歴にハンマーマークが出てくる。前回との設定の差分も見れる。

コンソールを見やすくする系

  • Timestamper
    コンソール出力にタイムスタンプを表示できる。経過時間も見れる。

自分色に染める

プラグインじゃないTips

  • JUnitのテストレポート表示
    JUnit互換で出力させると、Rspecの結果も表示できる。
  • マルチ構成プロジェクト
    Safarimacだけ、とかをフィルターで出来る
  • パンくずメニューでショートカット
    いろんなメニューが出てくる。 画面遷移を減らせる。
  • コンソールにジャンプ
    ビルド中の青いメーターをクリックすると、コンソール出力を見れる
  • safeRestart
    /hostname/safeRestartにアクセスすると、再起動出来る

CIを制す

CIを制したら

Jenkins実践入門は改訂予定のため、まだ電子化されない

継続的インテグレーションから継続的デリバリーへ

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によるプルリクエストの検証
    • jenkins-infraというコントロールリポジトリ。puppetのmanifestの集合。環境+ビルド番号を持っている。
    • まずは文法チェック=rspec-puppet。
  • serverspecによる一時サーバでの検証
    • vagrantに適用してみる。EC2でやっている。EC2でやることで、並列に高速に実行できる。
    • Vagrantfileに書いてある。
    • 今はmasterに対してだけやっている。金があれば、Pull Request単位でもいいんじゃないか。
  • r10k + puppet enterprise
    • ブランチ名=環境名になる。
  • 環境別の際を吸収するHiera
    • 階層構造も自由に出来る -> yamlファイルに外出し
  • 鍵・秘密の情報の取り扱い
    • dockerのpackageに入れなくていい
    • hiera-eyaml でパラメータの個別暗号化。eyamlというエディタで変更 -> 保存すると暗号化。鍵は別に保存しておく必要がある。
  • ブランチと環境の関係
    • Pull Requestをマージすると、自動的に本番に反映される、とか。
      ビルド履歴がGitHub上に残る。

継続的デリバリの課題

  • 実際にいつ起こったのか
  • 現在のサーバで走っているのはどのビルドか

ファイル指紋

  • md5 check sum。
  • 自動的に指紋を取る
  • テストとビルドが関連づいていなくても、追える
  • デモ
    • Jenkinsでビルド -> 手動でデプロイ(デプロイ結果をJenkinsに通知) -> Jenkinsでテスト
    • Promotionプラグインを入れておくと、デプロイされたことが星印で出てくる
  • いつ・なにが・どこにデプロイされたのかを確認できる
  • Chefとpuppertにしか対応してないけど、拡張可能な形式で作ってある
    • Chefはカスタムレポートハンドラーとして実装

今後の予定

  • データの可視化
  • ファイルじゃないのもの指紋
  • jenkins-ci.orgの運用でも使っていく