読者です 読者をやめる 読者になる 読者になる

GeekFactory

int128.hatenablog.com

第6回Jenkins勉強会に参加しました

jenkins

第6回Jenkins勉強会 - connpass に参加しました。某試験等の影響により遅くなってしまいましたが、まとめを書いてみます。不備がありましたらご連絡頂けますと幸いです。

Gerrit Trigger Pluginを使ってJenkinsをコードレビューシステムGerritのレビューアーにしてみよう(太田さん)

  • 入門Jenkins 実践「継続的インテグレーション」本の紹介
  • 問題提起
    • コードレビューの専門チームがいるケースを考える。
    • レビュー結果が戻ってきた時にはコードベースが進んでいる。
    • CIによる自動レビューと専門家のレビューが分断している。手作業のレビューが完了基準になりにくい。
  • コードインスペクション
    • コードメトリクスで全体傾向を見るのに使う。
    • Jenkinsで動かしているだけではなかなか直してもらいにくい。
  • Gerrit
    • Gerritでレビューのワークフローを自動化する。
    • レビュー済みのコードだけ開発ブランチにマージできる。
    • Gitのマニアックな機能に依存してるのでワークフローに慣れるのが難しい。
  • デモ
    • 開発者はそのままgit pushできない。remote refsを書き換えてpushする。
    • レビューアはGerrit上でパッチを確認してcommit & pushする。
  • Gerrit Trigger Plugin (Jenkins)
    • ジョブの結果によってVerified, Code Reviewの投票を自動化できる。
    • ユニットテストが通ったら Verified+1、インスペクションが通ったら Verified+1など。
    • インスペクションでエラーが見つかった場合は-1など。
  • 期待効果
    • 自動テストやインスペクションを通っていないコードをわざわざ人手でレビューしなくて済む。
    • 開発者がインスペクションツールをかける動機付けになる。

コードレビューやインスペクションのワークフローをどうすべきか悩んでいたので参考になりました。ビルドサーバでCIが動いているだけではダメで、どうやって開発者のワークフローに取り込んでいくかという視点は勉強になりました。Gerritのワークフローは理想的ですが、現場で使うにはハードルが高いと感じました。

おひとりさまからはじめよう、おひとりさまでもはじめよう。〜 ある管理部門のJenkins展開への道〜(高野さん)

  • ISPの運用チームでのこと
  • episode 1
    • 仕事&育児の過密スケジュール
    • 帰宅してからのワークフローを見える化してみた
    • 当時はPloneを使ったサポートに取り組んでいたが、DBが壊れる問題で運用が泥沼化
    • 仕事に余裕がないと家庭が壊れる・・・
  • episode 2
    • 失敗や障害の記録をRedmineに残していたきっかけで、r-labsで執事との出会い
    • 運用チームの中では反応は今ひとつ(何の役に立つの?)
    • プライベートでどんどん使ってみる
    • 定型化できる作業をシェルスクリプト化してジョブ登録していった
    • きれいにログが取れるのが嬉しい
    • 多段SSHな環境でもHTTPプロキシをうまく使えばいい
    • Ploneの問題はジョブで解決できた(ログ監視、リカバリジョブ)
  • episode 3
    • 開発部隊の勉強会で紹介したところ、自作CIツールを作っていたチームがHudsonを導入することに
    • コミュニティで活動するようになった
    • 分析システムをリプレイスする機会にジョブ管理ツールとしてJenkinsを使うことに
    • 大規模な分散ビルド環境を構築(20台近く!?)
    • 単なるcronやバッチ処理からジョブ管理の考え方が浸透
  • episode 4
    • インフラの障害や構成変更により安定していたジョブが失敗することがある
    • メンテナンスカレンダーを作って運用
    • チームや組織の信頼関係が重要
  • tips
    • ジョブの実行時間で異変が分かる
    • 気がかりなジョブは記録しておくと調査できる
    • 社内blogにJenkinsおじさんがいて、外部APIを使って投稿したりチケットを依頼したりで活躍している。
  • 質問タイム
    • Jenkinsのスケジューラは時刻ぴったりにジョブを開始できないが困ったことはあった?
    • そのような指摘はあったが、実際は後続ジョブが多かったので特に問題なかった。

Jenkinsはジョブ管理ツールとしても優秀ですよね。私も開発環境ではJenkinsで運用管理ジョブも走らせていますが、プロダクションの環境で大規模なジョブを組んでいるお話を聞いてすごいと思いました。特に運用の文化で苦労された話は共感できました。私もシステム運用の仕事でもJenkinsを使ってみようと思います。

Jenkins User Conference San Franciscoの活動報告、Jenkow pluginの紹介(川口さん)

  • プラットフォームとしてJenkinsを使う事例が多い。プラグインでやりたいことを実現している。
  • 面白そうなもの
    • 変更されたファイルから実行するテストを割り出す。
    • Selenium Testでピクセル比較
  • プラグイン開発トークでは、ドキュメントがない、ここは触れてはいけない、など辛口な話が。
  • 余興でリアルJenkinsおじさん登場!
  • Jenkow Plugin の紹介
    • ジョブ同士の連携で全体の見通しが悪い問題を解決
    • BPMN 2.0でワークフローを設計する(並列分岐、条件分岐、合流、イベント分岐)
    • Eclipse Pluginのデザインツールが結構いけてる
    • ワークフロー記述はgit pushして反映する

Jenkins User Conferenceでは大規模な運用事例が多く紹介されていました。Jenkow Pluginですが、グラフィカルなジョブデザインツールはいつか誰かが作るのではと期待していたのでキターという感じです。まずはプライベートで使ってみます。

LTセッション

自分の発表があったのでメモが取れませんでしたが、興味深い発表や布教活動(?)で面白かったです。IDEAって有償やったんやと先輩に話したらえー知らなかったの?とツッコミを受けました。詳しくは 川口さんのまとめ が素晴らしいです。

Jenkinsによるパフォーマンステストの自動化

最後に私のスライドを貼っておきます。短時間なので概要だけでしたが、機会がありましたら細かい内容も発表したいです。発表の機会を頂きましてありがとうございました。