web-dev-qa-db-ja.com

GitLabとTeamCityの統合

GitLab 7.6またはその周辺以降、GitLabプロジェクトから直接TeamCityを使用する新しいオプションがあります。セットアップには次のメッセージがあります。

Teamcityのビルド構成では、ビルド形式番号%build.vcs.number%を使用する必要があります。また、すべてのブランチの監視を構成して、マージ要求がビルドされるようにします。この設定は、vscルートの詳細設定にあります。

これがどのように機能するかわかりません。リポジトリFooがあるとしましょう。

TeamCityでビルドをセットアップして、ブランチ仕様でFooをリッスンしました:+:refs/pull/*/merge

次に、gitlabでFooをFooForkとしてフォークし、変更を加えてから、FooFork-> Fooのマージをリクエストします。

しかし、このマージをテストすることは何も起こりません。これは、GitLabに期待していたことです。マージを受け入れると、ビルドサーバーが(すぐに)アクションを開始し、2回ビルドします(master/ref/master)。

また、ビルド構成を正確に使用するように設定しました:%build.vcs.number%をビルド番号として規定どおりに使用しましたが、gitlabはビルド結果に関する情報を提供していないようです。

ですから、このGitLab-> TeamCity統合が正確に何をするのか、そして私が間違っているのかどうかについて、私は少し混乱しています。

現在、GitLab7.9とTeamCity8.1.4を実行しています

更新:

このユースケースはバージョン8より前ではサポートされていなかったようです--- https://github.com/gitlabhq/gitlabhq/issues/724

10
Meirion Hughes

GitLab8.0.2とTeamCity9.1.1を実行しており、ブランチとマージリクエストでCIビルドを実行できます。

特定のブランチのCIビルドをトリガーするには、VCSトリガーを ブランチ仕様+:refs/heads/(xyz*)と一緒に設定します。ここで、xyzはチケットシステムプレフィックスの文字列です。これは、アクティブなブランチすべてに名前を付ける必要があるためです。課題トラッカーのエントリ。

ブランチ仕様+:refs/(merge-requests/*)を介してマージリクエストのビルドをトリガーします

すべてが期待どおりに機能し、すべての機能/バグブランチのステータスとマージリクエストを自動的に通知します。

マージリクエスト仕様のGitLab8リリースノートエントリにリンクしているRobのコメントに感謝します。

7
jefeveizen

ここでも同じ問題があります。別の方法があるかもしれません、私は今評価しています。ターゲットMRからマージされた状態を取得する直接的な方法はないため、自分でビルドする必要があります。

IMOには次のやることがあります
1。)ベアリポジトリを初期化する$ git init
2。)ターゲットリポジトリを追加します$ git remote add Origin git@your-repo:<Origin.group>/<Origin.repo>.git
3。)リモート/機能/マージの$ git remote add target git@your-repo:<feature.group>/<feature.repo>.gitを追加します
4。)機能ブランチをチェックアウトする$ git checkout -b <feature.branch> feature/<feature.branch>
5。)元のブランチをチェックアウトする$ git checkout -b <Origin.branch> Origin/<Origin.branch>
6。)機能を元のブランチにリベースします$ git rebase <feature.branch>

ここで述べたように [1] 、GitLab-CEはマージリクエストの作成時にイベントを発生させることができます。

したがって、あなたがしなければならないのは、WebHooksを評価できるいくつかのmetaを構築することです。

[1] http://doc.gitlab.com/ce/web_hooks/web_hooks.html#merge-request-events

2
Rob