web-dev-qa-db-ja.com

TeamCityビルドステップでgitコマンドを使用する

TeamCity v7.0ビルドプロジェクトの1つは、現在の開発ブランチとマスターブランチの差分を使用して、実行する必要があるものを決定することに依存しています。次のようなものを使用する小さなスクリプトを作成しました。

git diff Origin/master..Origin/QA --name-only --diff-filter=AM | DoSomethingWithThoseFiles

残念ながら、ビルドログはgit diff 動かない。このプロジェクトのbuildAgent/workディレクトリに移動すると、.gitフォルダーであるため、必要なgit操作を実行できません。

teamcity.git.use.local.mirrors=true の中に buildAgent.propertiesファイルは TW-1587 に記載されていますが、それは何の助けにもならないようです。

ビルドステップのスクリプトで2つのブランチ間でファイルのリストを変更するためにできることはありますか?

41
Jake Stevenson

文書化されている here のように、VCSチェックアウトモードを「常にエージェント上のファイルをチェックアウトする」に変更してみてください。これにより、ビルドスクリプトが.gitフォルダーにアクセスできるようになります。

50
Mike Two

@Mike Twoの答えは正解です。サーバーではなくエージェントで自動的にチェックアウトモードを使用するようにVCSルートを設定する必要があります。 TCドキュメントでは、この必須設定がデフォルトで「詳細」として非表示になっていることは言及していません。だからここに何を探すべきかの写真があります。

Advanced Settings

参考までに、私の特定のVS2013ソリューションステップエラーは、以下のようにMSBuildからのものでした。私は最新のTeamCity Enterprise 9.0 EAP(ビルド31963)を使用しています。 [PreBuildEvent] Exec [14:21:55][Exec] git rev-parse --short=9 HEAD > "C:\TeamCity\buildAgent\work\e5e910561e800525\MYPROJECT\bin\Debug\version.txt" [14:21:55][Exec] fatal: Not a git repository (or any of the parent directories): .git [14:21:55][Exec] C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1131, 5): error MSB3073: The command "git rev-parse --short=9 HEAD > "C:\TeamCity\buildAgent\work\e5e910561e800525\Higgens\bin\Debug\version.txt"" exited with code 128. [14:21:55]

//編集;これをコメントに追加する方法を知りませんでした。

7
AnneTheAgile