2012-07-24 4 views
38

TeamCity v7.0 빌드 프로젝트 중 하나는 현재 개발 분기와 마스터 분기 간의 diff를 사용하여 실행해야 할 사항을 결정하는 데 의존합니다.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).하지만 어떤 방식 으로든 도움이되지는 않습니다.

내 빌드 단계에서 스크립트의 두 가지 분기간에 변경된 파일 목록을 얻으려면 할 수있는 일이 있습니까?

+1

해결 방법이 있습니까? 또한 TeamCity 8.1을 사용하는 데 어려움이 있습니다. VCS 체크 아웃 모드를 "자동으로 에이전트에서"사용하고 있지만 도움이되지 않습니다. .git 디렉토리가 아직 없습니다. – user24601

답변

45

here에 설명 된대로 VCS 체크 아웃 모드를 "상담원의 파일을 항상 체크 아웃"으로 변경해보십시오. 그러면 빌드 스크립트가 .git 폴더에 액세스 할 수있게됩니다.

+3

그게 나에게 길을 가져 왔지만, origin/Master와 현재 브랜치 사이의 diff 작업은 효과가 없다. 대신, 로컬 또는 원격 단일 분기 만 인식하는 것처럼 보입니다! 나는 TC가 펑키 한 것을하고 있다고 생각한다. 클론이나 예외적 인 복제. "git fetch"는 현재 repo가 ​​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의 답변이 정확합니다. Checkout 모드를 Checkout 모드에서 자동으로 사용하려면 서버에서 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]

// 편집; 내가 코멘트에 어떻게 추가할지 몰랐다.