web-dev-qa-db-ja.com

ゲートチェックイン/ Gitの事前テスト済みコミット?

TFS(Team Foundation Server)からGitへの移行を検討していますが、ゲートチェックイン(事前テスト済みまたは遅延コミットとも呼ばれます)に対するTFSのサポートに一致するものが見つかりません。

Atlassian Bambooは、ゲートチェックインをサポートしていません。 TeamCityはそれをサポートしますが(用語を使用した「遅延コミット」)、Gitはサポートしません。 Jenkinsを単独で使用するか、Jenkins + Gerritを使用すると、大きな欠点があり、TFSのゲートチェックイン機能に近づきません。 (このビデオでジェンキンスの作成者自身が説明した欠点: http://www.youtube.com/watch?v=LvCVw5gnAo

Gitは(正当な理由で)非常に人気があるので、人々はこの問題をどのように解決していますか?現在最良の解決策は何ですか?

28
user479911

Gitの使用を開始し、ワークフローを使用して事前テスト済みのコミットを実装しました(私はこれを今日テストしました)。

基本的に、各開発者には、読み取り/書き込みアクセス権を持つ個人用リポジトリがあります。私たちの場合、ビルドサーバーTeamCityは、これらの個人用リポジトリを使用してビルドし、成功した場合は「グリーン」リポジトリに変更をプッシュします。開発者には「グリーン」への書き込みアクセス権はありません。TeamCityビルドエージェントのみが書き込み可能ですが、開発者は「グリーン」から一般的な更新をプルします。

したがって、開発者は「グリーン」からプルして個人にプッシュし、TeamCityはパーソナルからビルドしてグリーンにプッシュします。

このブログ投稿 は、私たちが使用している基本モデルを示しています。個人リポジトリのGitHubフォークを使用します(フォークを使用すると、リポジトリの数が手に負えなくなり、結果的にコストがかかることになります。開発者は個人のビルドを管理できます。フォークしてから、チームシティのビルドジョブを作成して、コードを「グリーン」にプッシュできます)。

enter image description here

各開発者は独自のビルド構成を持っている必要があるため、これはTeamCityで設定するためのより多くの作業です。 TeamCityはすべてのビルドステップ(最後の「Push to green」ステップを含む)を実行するように見えるため(テストのように)以前のビルドステップが失敗した場合でも、実際には2つの構成でなければなりません。開発者向けにビルドし、次にそれに依存する別のビルド構成。

16
Sam Holder

チェックアウト Verigreen -軽量のサーバー側ゲートチェックインシステム。システムが保護するブランチに入る前に、各コミットを検証します。 Verigreenは、失敗したCIコミットが、統合、リリース、または保護する必要があるブランチを破壊することを許可しません。さらに、これは無料のオープンソースプロジェクトです。

仕組み:Verigreenはチェックインをインターセプトし、アドホックブランチで検証を実行するため、コミットが失敗した場合、関連する開発者のみが影響を受けます。

  • Pre-receiveフックがインターセプトして、コードのアドホックブランチを作成します。
  • 検証はJenkinsジョブを介して実行されます。検証ジョブの内容は完全に構成可能です。
  • 検証されたコードは保護されたブランチにマージされますが、失敗したコミットは開発者に送信される通知でブロックされます。

enter image description here

決定は次のフローに基づいて行われます。

Verigreen - Basic Flow

詳細については、 wiki または Verigreen.io サイトを参照してください

9
soninob

2013年10月23日 の後、答えは次のようになると思います- TeamCityでの自動マージ

4
Stanislav

gitには異なる哲学があります-コミットは簡単です、あなたが望むようにコミットしてください。何か問題がある場合は、後で変更できます。そして、マージは簡単です。したがって、適切なワークフローを整理できます。開発者は別のブランチでコミットできます。ブランチがテストされると、メインブランチにマージされる可能性があります。

0
kan

TFSを中央リポジトリとして使用し、GITをローカルDVCSソリューションとして利用しないのはなぜですか?

これにより、ローカルでビルドしてコミットし、TFSサーバーに必要なものをプッシュして、ゲートビルドを実行できます。

時々両方の世界のベストを持っていることは良いことです...

VS Team Services(fka Visual Studio Online)とTFS 2015以降では、Gitを使用したゲートチェックインワークフローとして、プルリクエストに ビルドを渡す必要があるブランチポリシー を使用できます。

0
Buck Hodges