2013-10-01 8 views
17

私たちはGitLabを使ってreposを管理しています。私たちはGitFlowのプロセスに従おうとしており、その一環として、TeamCityで任意のマージリクエストに対してテストを構築して実行できるようにしたいと考えています。Gitlab - CIサーバのマージリクエストの作成

これはGitLab CIでも可能ですが、それは私にとって現実的な選択肢ではありません。

+ refs/pull/*/mergeのようなブランチ仕様を使ってGitHUBでこれを達成する方法についてのチュートリアルを見てきました.GitLABで同様のブランチ仕様を作成するのですか?

我々はGitLabのバージョン4.2を使用しているが、チームシティー

+2

これは本当に便利だと思います。 Jenkinsにはマージリクエストビルダーがありますが、TeamCity(https://github.com/jenkinsci/gitlab-merge-request-builder-plugin)に相当するものは見つかりません。このプラグインのソースを見ると、+ refs/pull/*/mergeのようなものを見るよりもはるかに複雑であることが示唆されました。 –

答えて

10

のこの機能とバージョン8のために必要であれば、私はGitLab 6.3とチームシティー8を持っていると私はあまりにも機能ブランチを構築する必要があるアップグレードすることができます。私たちは以下のワークフローを持っています(git-flowに基づいていますが、リリースサイクルに応じて若干変更されています)。

したがって、私たちはdevelopmentブランチを持ち、1つは特定の名前dev/feature-name-hereを持つフィーチャーブランチをプッシュします。

次に、dev/feature-name-hereからdevelopmentまでのGitLabでのマージリクエストの作成。

TeamCityは、ブランチのビルドが自動的に開始されるように、次のrefspec:+:refs/heads/dev/(*)で各ブランチのビルドを自動的に実行するように設定されています。

次に、私はGitLabのマージリクエストページに埋め込まれたカスタムスクリプトを持っています。それは以下を行います。

  1. ソースを検出し、チームシティーREST APIを使用するとMRページ
  2. を見て、枝をターゲットとすることである構築列挙対象ブランチに属している(チームシティー8に、私たちは私たちが使用して構築するために、構成IDをカスタムビルド割り当てることができますdevUnitdevIntegrationdevWhateverなど)
  3. 関連するビルド構成ごとにソースブランチとターゲットブランチのビルドステータスイメージが含まれています。

今では次のようになります。

TC Build status at GitLab

今、このアプローチは、1が他のプッシュでブランチを更新した場合、私はGitLabページから把握することはできませんのようないくつかの欠点を持つ新しいコミットがすでにあるさビルドされているか、私はビルドステータスを確認しているので、ビルドリンクをクリックしてTeamCityをチェックする必要があります

+0

私はこれをセットアップして、マージ要求を作成しました。私たちは名前 'hf/'でホットフィックスを作成します。 Teamcityは支店を選んでいますが、自動ビルディングは行っていません。ビルドトリガに特定の設定がありますか? – Broncha

+0

標準のvcsビルドトリガー以外は何も特別なことはありません。これらはフィルターや例外なしで設定されます。変更が検出された場合にのみ開始します。 – Olegas

+0

こんにちは@Olegas、これはどのように達成するのですか? –