2010-04-16 5 views
2

현재 빌드 프로세스CI (Hudson) 활동을 기존 자동화 된 빌드 프로세스 (phing, svn)에 동기화하는 방법은 무엇입니까?

우리는 현재 라이브 전에, 스테이징 환경에 코드를 배포 할 수 Phing을 사용하는 개발자 (2 ~ 4 명 프로젝트에 따라 다름)의 작은 팀이야. 우리는 SVN 저장소에 코드를 유지합니다. 여기서 트렁크는 현재 활성화 된 개발을 유지하고 테스트 할 분기를 만들고 (성공하는 경우) 태깅 환경으로 태그를 지정하고 내 보낸 분기를 만듭니다. 모든 것이 잘된다면 우리는 결국 프로덕션 서버에 배포합니다. 작업은 고도로 자동화되어 있지만 사용자의 개입으로 항상 트리거됩니다.


의심 이제 우리는 그 과정에서 (허드슨) 지속적인 통합을 소개하고 싶습니다

; 안타깝게도 활동 동기화에 대해 몇 가지 의문점이 있습니다. CI가 빌드 프로세스를 방해하고 특정 문제를 야기 할 수 있기 때문입니다.

, 우리가 "통합"에 대한 2 가지 경우를 참조 자동화 된 CI주기가 자동으로 실행 행위의 특정 주파수를 가지고 있음을 고려할 때, 자신의 문제와 각각 :

  1. 케이스 A는 각 CI주기가 생산하는 새 이름 브랜치; 우리는 과 같은 이름을 수동으로 사용합니다 (지금은 phing을 통해) 코드를 SVN에서 env로 내보내십시오. 여기서 볼 수있는 문제는 (특정 대응책이 인 경우 - IE 삭제) 분기 번호입니다. 은 쉽게 제어 할 수 없으므로 ( 은 우리가 자주 커밋한다고 가정합니다. 따라서 에는 새로운 빌드/분기마다 N 분).

  2. 사례 B : 각 CI주기는 우리가 수동으로 이 준비에 수출하기로 결정 만 고유 한 이름으로 태그가 '현재'라는 이름의 새 지점을 생성; 현재 현재 분기는 어떤 경우이든 다음 주기가 시작되면 이 삭제됩니다. 우리가 여기 을 볼 문제는 새로운주기가 I 이후,/사람이 태그 반면에 를 걷어차 내가 너무 비관적이야 이렇게 준비 일치하지 않는 빌드를 만드는 (하지만 어쩌면 여기 에 '현재' 분기를 수출 할 수 있다는 것입니다 고백 SVN 이 이에 대해 내장 된 보호 기능을 제공하는지 여부를 알지 못합니다. ).

이 모든으로

은 비슷한 경험을 가진 사람은 주제에 우리에게 몇 가지 힌트를 줄 너무 친절 될 수 있다면 위에서 설명 된 방법 중 어느 것도 완전히 우리에 부합 하하지 보이는 때문에 나는 궁금했다되고.

전체 사진에서 완전히 중단 된 중요한 것이 있습니까? 귀하의 도움에 감사드립니다 (&)!

답변

2

두 옵션 모두에서 "각 CI 사이클은 새 분기를 생성합니다"로 시작합니다. 하지 마십시오. 프로젝트가 엉망이되는 것을 피하기 위해 분기 수를 최소로 유지하면서 항상 통제하에 있어야합니다 (수동으로 생성). 메인 라인의 개발이 준비되어 있고 릴리스 후보 (트렁크에서 분기)를 생성 할 수 있는지 여부는 간단하지 않습니다.

CI주기는 코드의 변경에 의해 트리거되어 이러한 변경 사항을 통합해도 응용 프로그램이 손상되지 않습니다. 따라서 Hudson에서 개발중인 각 활성 스트림에 대한 프로젝트를 설정해야합니다. 즉, 메인 라인에 대한 것이고, 프로덕션 버전 (버그 수정 용) 및 RC 용 최종 버전을 나타내는 브랜치 용입니다.

는 CI 구현에 대한 훌륭한 가이드입니다.

2

우리가 프로젝트에서 사용한 접근법은 코드 변경이있을 때만 CI 빌드를 실행하는 것이 었습니다. 이 게시물 커밋 후크로 SVN에서 구성 할 수 있습니다. 그런 다음 인증 된 URL을 통해 HUDSON에서 빌드를 원격으로 트리거 할 수 있습니다. 문제 빌드 시스템이 지원하지 않는 한 작업을 생성해야하므로 문제가 있음을 알 수 있습니다. hudson이 repo에 새로운 분기가 있음을 파악하고이를위한 작업을 생성 할 수있는 방법이 없습니다.

+0

답장을 보내 주셔서 감사합니다. Ritesh. 우리의 문제는 사실 트렁크에서 변경이 일어 났을 때 허드슨을 방아쇠를 당기는 것과는 조금 다릅니다 (이미 주제에 관한 글을 보았습니다). 우리의 관심사는 실제로 다음 분기 (예 : 트렁크 코드가 모든 테스트를 통과 한 경우 마지막 빌드 사이클 동안 허드슨에 의해 자동으로 생성 된) CURRENT 분기가 다음 자동 허드슨 빌드 때문에 일관성이없는 상황을 피하는 반면 다른 누군가는 (CURRENT 분기) 준비 준비. 기본적으로 CI와 준비 단계로의 수동 이동 간의 동기화 문제입니다. 그런 문제에 직면 한 (그리고 해결 된) 사람이 있습니까? – maraspin

+1

그냥 제안 : 당신은 CI를 할 다른 지점을 사용하는 것. hudson에서 코드의 어떤 지점에서 빌드를 실행하도록 지정할 수 있습니다. 연속적인 통합을 위해 별도의 분기를 사용하고 코드를 커밋하기 위해 별도의 분기를 사용할 수 있습니다. –

관련 문제