24
©2010 CloudBees, Inc. All Rights Reserved ©2010 CloudBees, Inc. All Rights Reserved Jenkins にににににににににに にににに Architect, CloudBees, Inc. Lead/Creator, Jenkins project

Jenkins+Gitによる検証済みマージ(30分版)

Embed Size (px)

DESCRIPTION

第三回大阪Jenkins勉強会での発表内容です。

Citation preview

Page 1: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

©2010 CloudBees, Inc. All Rights Reserved

Jenkins による検証済みマージ川口耕介

Architect, CloudBees, Inc.Lead/Creator, Jenkins project

Page 2: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

2©2010 CloudBees, Inc. All Rights Reserved

もっと Jenkins に仕事をさせよう

次に Jenkins に何をさせようか?

Page 3: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

3©2010 CloudBees, Inc. All Rights Reserved

「テストに成功したらチェックイン」業• テストは計算機を酷使する– 同時に他の作業がしづらい– 手元のラップトップはより重要な作業に使わ

れるべき• 人間が計算機を待ってはいけない– 開発者の頭はより重要な作業に使われるべき– 満足する変更をしたら、次の作業に取り掛

かりたい

Page 4: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

4©2010 CloudBees, Inc. All Rights Reserved

Fire-and- F orget

Page 5: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

5©2010 CloudBees, Inc. All Rights Reserved

理由2:大規模プロジェクト開発者は一定確率で問題チェックインをすると仮定

↓ 人数が増えるほど

コードに問題が発生している確率が高まる

0 2 4 6 8 10 12 14 16 18 200%

20%

40%

60%

80%

100%

Page 6: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

6©2010 CloudBees, Inc. All Rights Reserved

「テストに成功したらチェックイン」業の自動化

• 問題点– VCS にコミットしないとテストしてくれない– コミットに問題があると他人に迷惑がかかる– コミットする前に手元でもっとテストしなけ

れば…?– あれ?

• コミットする前にテストしたらどうだろう– 「 pre-tested commit 」

Page 7: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

7©2010 CloudBees, Inc. All Rights Reserved

蓋を開けてみると…• Diff をやりとりするのはあまり便利でな

い– 次の作業へ進む時に diff をどこに保存する ?– 同僚に見せるには ?– 手戻りが発生した時に diff を再適用 ?– ファイル属性、シンボリックリンク、リネー

• こういうのをツールでサポートしないと !

Page 8: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

8©2010 CloudBees, Inc. All Rights Reserved

それって車輪の再発明?

「バージョン管理システム 」と人は呼ぶ

Page 9: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

9©2010 CloudBees, Inc. All Rights Reserved

Pre-tested commit + VCS =

• 開発者はテストしたい変更をコミットをする– 但し、 trunk や master にではなく、こっ

そりと• Jenkins はそのコミットを検査する• 検査に合格したコミットは trunk/

master に現れる

Page 10: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved©2010 CloudBees, Inc. All Ri

ghts Reserved

Git の場合

Page 11: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

11©2010 CloudBees, Inc. All Rights Reserved

モデル• 開発者の仕事– 自分のブランチにコミット– 時々リベースする

• 本物のブランチと区別するために「 personal/kohsuke 」などの名前規約を使う

• Jenkins の仕事– 開発者ブランチへのプッシュを監視– 検証して上流にマージ

Page 12: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

12©2010 CloudBees, Inc. All Rights Reserved

モデル

• マージ後の結果がテストされるのが肝心

master

kohsuke

Page 13: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

デモ

Page 14: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

14©2010 CloudBees, Inc. All Rights Reserved

お勧めできる理由• 簡単にはじめられる– リポジトリは一つでよい– 一人で勝手に始められる

• みんなで使える– Jenkins のジョブも一つでよい– 同じモデルが feature branch にも使える

• 「終わりよければ全てよし」モデル

Page 15: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

15©2010 CloudBees, Inc. All Rights Reserved

Subversion は?• Svnmerge プラグインを作りました– Git 程ではないけれど、 Subversion も進化

した• Git と同じようなことが出来ます

master

feature branch

Page 16: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

16©2010 CloudBees, Inc. All Rights Reserved

注意事項• Push と rebase はセットで行われる

©2010 CloudBees, Inc. All Rights Reserved

master

feature branch

Page 17: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

デモ

Page 18: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

18©2010 CloudBees, Inc. All Rights Reserved

利点と欠点• Subversion で使える• 部品の組み合わせ方で様々なモデルに対

• リポジトリにコミットが増える• 履歴をトラックするのが大変に– でも昔に比べればよくなった (svn log –g)

Page 19: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

19©2010 CloudBees, Inc. All Rights Reserved

【宣伝】 Git でこれを更に一歩進めて…• Jenkins Enterprise by CloudBees– CloudBees で出しているエンタープライズ

• Jenkins を Git server にしちゃいました

上流リポジト

リgate repo

ssh

Page 20: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

Demo

Page 21: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

21©2010 CloudBees, Inc. All Rights Reserved

BuildHive.cloudbees.com

• タダで使えます• 使ってみて感想を送ってください

Page 22: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

22©2010 CloudBees, Inc. All Rights Reserved

結論• もっと Jenkins に仕事をさせよう• Subversion でもできる

• より詳しくは、 http://jenkins-ci.org/

Page 23: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

23©2010 CloudBees, Inc. All Rights Reserved

リンク• 日本 Jenkins ユーザー会– Aka 日本ビルド職人の集い– http://build-shokunin.org/

• メーリングリスト• 勉強会の定期的な開催

Page 24: Jenkins+Gitによる検証済みマージ(30分版)

©2010 CloudBees, Inc. All Rights Reserved

Q&A