2011-11-18 4 views
8

ProGitに記載されているのと同様の変更されたインテグレーションマネージャワークフローを実装しようとしています。代わりにマージを実行するintegration managerJenkins/Hudsonを使用したインテグレーションマネージャGitワークフロー

Diagram of the Integration-Manager workflow

、私は開発者がコードを公開する前にローカルでマージしたい、と私はそのようなコードカバレッジと100の最小レベルとして、当社の継続的な統合の基準を、強制Quality Gatewayをしたいです他の開発者がチェックアウトするためにコードが祝福されたリポジトリに入ることを許可する前に、%テストは合格します。アイデアは、祝福されたリポジトリのコードは、常に私たちが定義し、常に構築する最小限の標準を満たしているということです。

ビルドが成功したときにジェンキンスが品質ゲートウェイの役割を果たし、祝福されたリポジトリにコードをプッシュするだけです。

これまでのところ、私は祝福されたリポジトリ、ジェンキンスの構築サーバー上のリポジトリ、gitosisを通じてアクセスされた裸のリポジトリ、もちろん開発者自身のリポジトリであるようにシステムを設定しました。

私は、恵まれたレポから引き離して統合リポジトリにプッシュする開発者を抱えています。今、私はJenkinsにインテグレーションレポから成功したビルドを祝福されたレポにプッシュさせようとしています。

私が達成しようとしているのと同じように見えた唯一の選択肢は、Jenkinsのプロジェクト構成の投稿構築アクションのGit Publisher設定の "Push Only If Build Succeeds"オプションです。ただし、このオプションでは、push urlまたはpush to remoteを指定することはできません。

私が理解しているように、Git Publisherの設定では、Repo JenkinsのクローンがJenkinsのパブリックリポジトリに戻ってワークスペースにプッシュされますが、別のリモートの恵まれたリポジトリにプッシュしたいと思います。

ジェンキンスがどのように祝福されたレポに押し寄せるようになるのですか?

EDIT 0: 私は私の祝福されたリポジトリにpushコマンドを実行する後工程を入れてみました。これはエラーがないという点で、動作するようです。しかし、何も変更はプッシュされていないされているとログがGitは、すべてが最新であると考えていることを示しています

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO]  ------------------------------------------------------------------------ 
[INFO] Total time: 1 minute 7 seconds 
[INFO] Finished at: Fri Nov 18 16:10:50 UTC 2011 
[INFO] Final Memory: 19M/45M 
[INFO] ------------------------------------------------------------------------ 
channel stopped 
[My Project] $ /bin/sh -xe /tmp/hudson5604254372179801803.sh + git push [email protected]:my-project.git --all 
Everything up-to-date 

そこは間違いなくあるので、Gitは、プッシュする何もないと考えて、なぜ私にはわかりません。

答えて

1

ワークフローにGerritを追加することを検討しましたか。変更はGerritにプッシュされ、CIはビルドを実行してテストを報告します。祝福されたレポに統合される前に、承認されたコードレビューのような他の承認が必要となるように設定することができます。 は、その開発にhttp://egit.eclipse.org/r/を使用しています。このワークフローについては、alblueのブログのように、他にも議論があります。

+0

興味深いように見えますが、私たちの現在のプロセスが持っていないのは、正式なレビュープロセスだけです。私たちのプロジェクトはメイベナイズされているので、ビルドに合格すれば、私たちが定義したテストやその他の要件に合格します。私たちの環境を複雑にする別のツールを持つことを正当化するのに十分な(プロセスに)追加するようには見えません。私は、私のニーズが変わっても、心に留めておきます、ありがとう! – chrisbunney

+0

私は複雑さを制限する必要性を理解しています:-)私は、両方のレビューを追加し、あなたの恵まれたレポにコミットする前に、CI /テストの結果を各変更に報告するということです。 –

+0

さて、私たちがその段階に来ると良いでしょう:) – chrisbunney

2

Jenkinsが「ビルドが成功すればプッシュのみ」アクションを使用し、統合リポジトリにコミット後またはフック後のフックを使用して、ジェンキンスが成功したビルド後にプッシュするたびに祝福されたリポジトリにプッシュする方法を教えてください。

+0

これは、行く方法のように見えます、 – chrisbunney

+0

+1ですが、これは変更を引き起こした支店を押し込むだけの価値があります。タグや変更を1つ以上のブランチにプッシュすると、プッシュされません(現在、ブランチごとに1つのプロジェクトを設定するのではなく、1レポごとに1つのプロジェクトを使用しています。連続的な統合を通じてプッシュスルー) – chrisbunney

関連する問題