7

우리의 개발/출시주기는 다음과 같이 작동TeamCity에서 자동으로 Git 기능 분기를 master와 병합하고 병합 충돌시 빌드를 실패하게하려면 어떻게해야합니까?

  1. 개발자는 개발자가 기능을 나타냅니다
  2. 이 테스트를 수용 할 준비가 기능을, 기능 분기를 생성 구현 (UAT)는
  3. 테스터 기능 분기를 배포하고 (수용 또는 수락 기능 다음 테스터하여 마스터 분기로 병합되고, 따라서 다음 REL 동안 방출 될

기능) 거부 (우리는 매주 트렁크/마스터 코드를 배포합니다).

테스터가 기능을 UAT로 처리하고 깔끔하게 병합하지 않을 것이므로이 기능을 사용하는 개발자는 일반적으로 다른 항목으로 이동 했으므로 병합 충돌에 대해 불만을 겪고 있습니다.

TeamCity에서 모든 기능 분기가 현재 마스터 분기에 자동으로 병합되고 병합 충돌을 초래하는 빌드가 실패한 빌드로 간주되는 솔루션을 고려하고 있습니다. 이로 인해 문제가있는 병합을 조기에 파악할 수 있습니다 그래서 우리는 그들을 빨리 고칠 수 있습니다.

TeamCity에는이 워크 플로가 기본적으로 지원되지 않습니다 (예 : 푸시가 X 분기, 마스터 체크 아웃, 분기 X 병합, 빌드, 유닛 테스트, 패키지 생성). TeamCity와 Github를 사용하여 비슷한 워크 플로를 만든 사람이 있습니까? 아마도 사용자 지정 msbuild 대상을 사용하고 있을까요?

편집 : 우리는 Github을 사용하고 있지만 우리는 현재 풀 요청을 사용하고 있지 않다는 것을 분명히해야합니다. :)

+1

위대한 질문 딜란, 나도 똑같은 문제를 해결하려고한다. 마지막 문장에서 GitHub에 대해 언급 할 때 대신 Git을 의미합니까? GitHub는 이미이 기능을 구현하고 있기 때문입니다. 나는 이미 오픈 소스 프로젝트에서 그것을 이용한다. –

답변

2

당신이 마스터와 합병 한 후 다음 풀 요청을 얻는 방법에 대한 하디 하리리의 블로그 게시물을 확인 Github에서를 사용하여 요청을 당겨하는 경우 :

http://hadihariri.com/2013/02/06/automatically-building-pull-requests-from-github-with-teamcity/

Github에서이 자동을한다 모든 풀 요청에 대한 병합 결과 병합을 사용할 수 있습니다 (비록 문서화되지 않은 거의)

git fetch origin +refs/pull/298/merge 
풀 요청 ID는 298입니다 그래서 모든 합병 풀 요청이 장소 오에 와일드 카드로 인출 할 수

f Teamcity의 ID로 자동 생성됩니다. 분기 사양은 다음과 같을 것이다 :

+refs/pull/*/merge 

편집 : 당신은 내가 당신이 어떤 자식 명령으로이 작업을 수행 할 수도 있겠죠 있도록 풀 요청을 사용하지 말한다. 나는 이것들을 당신 자신을 시작하게하는 몇 가지 조언 일 뿐이므로 밖으로 시도하지 않았다.

  1. Teamcity에서 branch specification feature을 사용하여 분기를 얻으십시오. 에이전트에서 코드를 확인하려면 checkout mode을 설정하십시오.
  2. 빌드 단계에서 마스터 분기를 대상 분기에 병합하십시오. 에이전트에서 마스터를 사용할 수없는 경우 먼저 가져와야 할 수 있습니다. 오류가 발생하면 빌드가 실패합니다.

병합 충돌을 확인하려면 strategies 중 하나가 작동해야합니다.

+0

@ Dylan-Beattie Github에서 Pull Requests를 사용 하시겠습니까? 아니면 Teamcity에서 자신 만의 흐름을 구현할 생각입니까? –

+0

Github 풀 요청 기능은 거의 정확히 우리가 찾고있는 기능입니다. Subversion에서 이전 중이며 아직 모든 Github 종소리와 휘파람으로 속도를 내고 있지 않습니다. –

+0

@DanielLee 마스터를 주어진 브랜치로 병합 할 수있는 빌드 단계 옵션. 어떻게 할 수 있니? –