2012-07-24 25 views
38

私のTeamCity v7.0ビルドプロジェクトの1つは、現在の開発ブランチとマスターブランチ間の差分を使用して何を実行する必要があるかを判断することです。TeamCityビルドステップでgitコマンドを使用する

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

残念ながら、ビルドログはgit diffが動作していないことを示している:私のようなものを使用しています小さなスクリプトを書きました。このプロジェクトのbuildAgent/workディレクトリに移動すると、.gitフォルダがないことがわかりますので、必要なgit操作を実行できません。

teamcity.git.use.local.mirrors=truebuildAgent.propertiesファイルに入れました(TW-15873)が、これは何らかの形では役に立たないようです。

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

+1

解決策がありましたか?私はTeamCity 8.1を使用してこの困難を抱えています。私はVCSチェックアウトモードを「エージェントで自動的に」使用していますが、それは役に立たないようです。 .gitディレクトリはまだありません。 – user24601

答えて

45

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

+3

それは私の方法の一部を持っていますが、起源/マスターと現在のブランチの間のdiffを行うことは機能しません。代わりに、ローカルまたはリモートの単一のブランチしか認識しないようです!私は、TCが何かファンキーなことをしていると思います。 "git fetch"は、現在のリポジトリがbuildAgent/work/blahにあっても、buildAgent/system/git/git-14CE2659.gitがgitリポジトリではないように見えるエラーを投げます。 –

+1

ありがとうございます!これは私が持っていた質問に答えた:http://stackoverflow.com/questions/17555931/how-do-i-get-teamcity-to-create-the-git-directory-when-cloning-a-repo-for-build –

+0

残念ながら、ssh認証アクセスが必要な場合、例えばリモートgit repoに変更をプッシュするために、TeamCityはフェッチ後にsshキーを消去するので、動作しません。 https://confluence.jetbrains.com/display/TCD9/SSH+Keys+Management –

7

@Mike Twoの答えは正しいです。チェックアウトモードを使用するには、VCSルートを設定する必要があります。 TCのドキュメントでは、この必須設定がデフォルトで「advanced」として隠されているとは言いません。ここに何を探すべきかの写真があります。

Advanced Settings

FYI、私の特定の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]

// edit;私はこれをコメントに追加する方法を知らなかった。

関連する問題