4

正常にビルドされた機能ブランチを別のブランチにプッシュする方法はありますか?

私はそのようなものが欲しいです:

Git リポジトリ (Gitorious/GitHub など)。支店:

  • master (現在のプロジェクトのコード)
  • 品質保証 (コードが QA を待つブランチ)
  • 機能ブランチ (開発者が機能を開発できる多くのリモート ブランチ)

開発者は、マスターへの読み取りアクセスと、機能ブランチへの読み取り/書き込みのみを持つ必要があります QA 読み取り/書き込み品質保証ブランチ TeamCity - 読み取り/書き込みマスター、品質保証、機能ブランチへの読み取り専用

そして今、次のようなワークフローが必要です。

  1. 開発者はマスター ブランチからコードをプルします。
  2. 開発者は機能ブランチ A を作成します。
  3. 開発者が変更をリモートの feature-branchA にプッシュする
  4. TeamCity は機能ブランチを監視します
  5. TeamCity は、コミットごとにビルドとテストをトリガーします。
  6. ビルドが成功した場合、TeamCity は変更を品質保証ブランチにプッシュします
  7. QA チームがコードをチェックします (場合によっては、他のテストや整合性テストを実行します)。
  8. QA がすべて問題ないと判断した場合、変更を master ブランチにプッシュします。

QA を使用したそのステップが必要かどうかはわかりません。おそらく、ビルドとテストが成功した後の各機能ブランチをマスターとマージする必要があります。

最初に知りたいのですが、それは理にかなっていますか? CI を始めたばかりで、うまくいくかどうかわかりません。

第二に、このワークフローが正しい場合、TeamCity をそのようなことを行うように構成する方法と、何らかの競合が発生した場合や何か問題が発生した場合にどうなるかを知りたいです。

最近、Git+Jenkins+Gerrit に関するプレゼンテーションを見ましたが、似たようなものを見ましたが、.NET 開発に関しては、個人的には TeamCity を好みますが、Jenkins でそれを行う方がはるかに簡単である場合、気が変わります。

4

2 に答える 2

2

有効なシナリオのようです。

更新: TeamCity 8.1 以降、専用の自動マージ機能があります。

古い回答: TeamCity には、ブランチを自動的にマージ/プッシュするためのサポートがバンドルされていません (上記のリストの番号 6 の場合)。TeamCity 課題トラッカーに関連する機能のリクエストがあります。

シナリオを現在の TeamCity バージョンで機能させるには、TeamCity でスナップショットの依存関係と成功時のトリガーを使用して別のビルド構成を作成し、機能ブランチ (TeamCity によって実行) を取得し、ビルド スクリプトがマージおよびプッシュ git コマンドを実行します。これを行うには、TeamCity エージェント側のチェックアウトを使用する必要があります。

于 2012-12-17T10:47:36.630 に答える
1

これと同じ目標を持つワークフローを github を使用して実装しました (ただし、実装は少し異なります)。Teamcity のいくつかの問題を解決するために、少しセットアップが必要になる可能性があります。ここに同様の質問に対する別の回答があります

私たちのソリューションでは、基本的に、各開発者がメイン リポジトリの独自のフォークを持ち、メイン (グリーン) リポジトリから読み書きする権利とプルする権利を持っています。開発者はブランチ (ストーリーごとに 1 つ、短命) で作業します。ブランチは、個人のフォークにプッシュするときにチーム シティによって構築されます。

開発者が変更をマスターにマージする準備ができたら、プル リクエストを送信し、コードをレビューしてから、最終的にマスター ブランチにマージします。次に、マスターブランチを個人のフォークにプッシュします。

このビルドが成功し、すべてのテストに合格すると (この時点で azure にもデプロイし、デプロイに対してテストを実行します)、マスター ブランチはチーム シティ ビルド エージェントによってグリーン リポジトリにプッシュされます。

このプッシュは早送りでなければなりません。そうしないと、プッシュが拒否されます (これにより、自動マージに関する潜在的な問題が解決され、恐怖でいっぱいになります)

これを簡単に拡張して、開発ブランチが QA リポジトリにプッシュし、QA がビルド サーバーにコミットして、グリーンへのプッシュをトリガーする (または QA にグリーンにプッシュする権利を持たせる) ことができます。

スナップショットの依存関係で物事を連鎖させる必要があるため、teamcity のセットアップは少し面倒な場合があります。これにより、テンプレートを使用する機能が阻害され、開発ごとに少なくとも 2 つのビルド構成が必要になることを意味します (デプロイに対処するために 4 つがあります)。 azure および azure に対する実行中のテスト) を使用しているため、多くの開発者がいる場合、これを管理するのは面倒かもしれません。理想的にはこれを行う必要はありませんが、チームシティの問題がまだ解決されていないため、テストが失敗した場合にビルドを常に高速に失敗させることはできません。

于 2013-01-11T12:37:41.333 に答える