2010-04-25 5 views
2

Mercurial에서 태그를 만들 때만 트리거하도록 내 빌드를 얻으려고합니다. (트리거 태그가 업데이트 된 경우에만)TeamCity - 특정 파일, Mercurial에 대한 트리거링

/hgtags :

+ :.이 작업을 수행하려고하는 방법 메신저는 VCS가 트리거를 구축 내가 설정 내 프로젝트에 대한 추가 빌드 구성 (태그 컨퍼런스)를 만드는 것입니다

- :. (다른 파일에서 트리거하지 마십시오)

내 빌드 conf (태그 구성)에서 "X Pending"으로 변경 사항 (태그 없음)을 누를 때마다 이것이 변경 세트로 의심됩니다. 그리고 Mercurial에서 Tag를 만들면 build i가 실행되고 X Pending은 사라집니다. 그렇다면 내가 할 일은 AssemblyInfo에서 build/rev 번호를 업데이트하고 (어떻게 든) Artifacts를 배포하는 것입니다 (어떻게 든).

질문 1 : 올바른 방법인가요? 아니면 더 좋은 방법이 있습니까?

질문 2 (임 sln2010 러너 + NUnit를 + 의욕을 사용) : 가 예를 들어 아티팩트를 이름에 사용할 수 있도록 태그에서 태그 이름을 얻을 수있는 방법이 있나요?

친절 도와서

답변

2

1 : 잘 보입니다. Mercurial 중심의 방법은 TeamCity 사용자의 Mercurial.ini의 [hooks] 섹션에 TeamCity에 빌드를 시작하라고 지시하거나 빌드를 시작하는 별도의 파일에 닿는 방법을 사용하는 것입니다. 그러나 .hgtags를 지켜 보는 것도 괜찮습니다. hg update이 실행 중일 때 (밀어 넣기 만하면 hg update 또는 hg pull -u없이 .hg 저장소 외부의 로컬 작업 복사본이 업데이트되지 않습니다).

2. .hgtags 파일 자체는 버전이므로 hg tag TAGNAME 명령을 사용하면 태그를 tip 수정본에 적용 했으므로 이제는 팁이되는 새 변경 집합을 만들었으므로 개정판에 TAGNAME 태그가 추가되었습니다 더 이상 팁이 아닙니다.

모든 변경 집합을 푸시 할 때 Q1에서 언급 한 것과 동일한 고려 사항이 있습니다. 수정 버전은 hg update입니까? hg update -r tip (가장 쉬운 동작과 기본값) 태그가있는 개정판을지나 한 개정판으로 업데이트하는 경우입니다.

다행히도 이런 종류의 까다로운 상황을 극복하는 데 매우 유용한 템플릿 항목이 있습니다 ({latesttag}{latesttagdistance}). 그와

당신은 같은 수행하여 최신 태그에 빌드 스크립트 업데이트를 할 수 있습니다 :

LATESTTAG=$(hg log --template '{latesttag}') 
hg update -r $LATESTTAG 

을하고이 태그가 지정되지 않은 위해 빌드 인기있는 버전 문자열 수 :

VERSION=$(hg log --template '{latesttag}+{latesttagdistance}') 

이러한 명령 행의 Windows 화는 이렇게 무력화 된 독자를위한 연습으로 남았습니다. :)

+0

안녕하세요 저는 HG에 아주 새로운데, 템플릿 항목은 재미있을 것 같습니다. 나는 곧바로 파고들 것이다. 그러나 태그의 이름을 가져 오기위한 템플릿이 있는지 머리를 숙여 알 수 있습니까?hg 태그 "MyTagRC1"에서 "MyTagRC1"을 얻으시겠습니까? –

+0

그게 위의 {latesttag}가하는 것입니다. 최신 태그의 이름을 가져옵니다. –

관련 문제