5

내가 찾고있는 것은 저장소에있는 모든 지점에 대한 자동화 된 빌드와 CI가있는 것입니다. 이 웹 응용 프로그램을 빌드 할 때마다 자체 프로젝트를 만들고 브랜치 사이트에 가상 디렉터리 (또는 동급)로 배치해야합니다. 새로운 지점을 만들고 지속적인 통합을 시작하고 프로세스를 자동으로 구축 할 수 있다면 좋을 것입니다. IIS에 새로운 가상 디렉터리를 추가하는 것은 그리 큰 문제가 아니며, 나머지가 그대로 자리 잡으면이 작업을 수행하는 것이 좋습니다.SVN 브랜치의 자동 빌드

예를 들어

:

http://branch.domain.com/branch101/

현재

http://branch.domain.com/otherBranchName/

, 나는 SVN, NANT 및 CruiseControl.Net을 사용하고 있습니다,하지만 난 다른 지속적인 통합 서버를 열려있어 또는 구축 상황에 따라 스크립팅.

+0

잘 모르겠습니다. 질문을 이해합니다. 코드를 분기 할 때 자동으로 새 CC.net 프로젝트를 찾고 있습니까?또는 여러 분기를 빌드하기 위해 ccnet을 설정하는 가장 좋은 방법은 가상 디렉토리를 언급하는 것입니다. 우리는 웹 어플리케이션을 사용하고 있습니까? – Richard

+0

모두 예, 명확하게 질문을 편집했습니다. (잘하면!) –

답변

1

나는 진짜 질문을 이해하지 못한다. 어쨌든 허드슨 (http://hudson-ci.org/)을 제안합니다.

사용하기 쉽습니다. XML 파일로 쉽게 구성 할 수 있습니다. 원격 API가 있습니다.

+0

+1 허드슨. (주의 : 여러 플랫폼에서 빌드를 수행하면 허드슨은 모든 플랫폼이 완료 될 때까지 다음 빌드로 진행하지 않을 것입니다. 즉, 가장 느린 빌드/테스트 시스템이 다른 모든 사람들을 느리게 만듭니다. 적어도 이것은 작년의 경우였습니다. 우리가 그걸 시도했을 때.) – sbi

+0

정말 이니? 플랫폼에서는 허드슨 직업을 의미합니까? 왜냐하면 당신은 한층 더 "Build Executor"를 설정할 수 있기 때문입니다. 결코 사용하지 않지만 Hudson은 빌드를 배포하기 위해 "마스터/슬레이브"모드를 지원합니다. –

+0

@ungarida : 허드슨은 우리가 평가 한 더 유망한 CI 도구 중 하나 였고 ISTR 덕분에이 때문에 포기했습니다. 그러나 나는 허드슨을위한 "일자리"가 무엇인지를 기억하지 못한다. 그래서 나는 이것이 확실하지 않다는 것을 의미한다고 생각한다. – sbi

1

브랜치를 기반으로하는 지속적인 통합 프로젝트를 자동 설정하는 것으로는 생각하지 않습니다. 그러나 브랜치가 꽤 표준적이고 크게 변경되지 않으면 새로운 프로젝트를 설정하기 위해 powershell 스크립트 (또는 원하는 스크립팅 언어)를 작성하는 것이 훨씬 쉽습니다.

CC.NET에서 분기 할 때 트렁크 프로젝트를 복사하고 필요한 필드를 검색하고 바꾸는 데 1 분도 걸리지 않습니다. 문제가 발생하는 유일한 경우는 빌드 중에 사용되는 사용자 지정 스크립트가있는 경우입니다. 그러한 스크립트가 있으면 해당 스크립트를 수정할 필요가 있지만 계속적인 통합 시스템에서도 마찬가지입니다.

3

이 작업을 수행 할 수는 있지만 대부분이 빌드 스크립트에 의존합니다. 예를 들어, cvnet에 최상위 svn 폴더를 모니터링하도록 지시하면

http://myserver.com/svn/project이 아니라 http://myserver.com/svn/project/trunk이됩니다. http://myserver.com/svn/project에 변경 사항이 있으면 빌드가 시작됩니다.

이제 소스가 오래되었거나 빌드 할 새 분기가 있는지 확인하는 것은 빌드 스크립트의 책임입니다. 빌드 스크립트는 모든 새 분기에 대해 새 VDir을 작성합니다.

또 다른 옵션은 cc.net에 새 프로젝트를 추가하는 것 외에는 아무 것도 할 수 없도록 설계된 cc.net 프로젝트를 갖는 것입니다. (BranchBuilder 프로젝트라고 부른다.) 나는 cc.net에서 전처리 기 (preprocessor)를 활용하고 트렁크와 각 브랜치에 대한 프로젝트를 포함하는 최상위 .config 파일을 가지고있다. 브랜치 빌더 프로젝트는 svn에 루트 경로를 표시합니다. 변경 사항을 발견하면 마지막 빌드 이후에 새로운 분기가 있는지 살펴볼 것입니다. 이 파일이 있으면 해당 분기에 대한 ccnet-branchname.config 파일을 만들고 vdir을 만든 다음 추가 포함 파일로 ccnet.config 루트 파일을 업데이트 할 수 있습니다.

ccnet config가 업데이트 된 후 cc.net은 config 파일이 수정되었음을 인식하고 새 분기 프로젝트를 추가하는 config를 다시로드합니다. 해당 지점 프로젝트가 실행되어 새 지점을 빌드합니다.

+0

내 생각에 이것은 정말로 나쁜 생각입니다. 나는 당신이 너무 많은 것을 자동화하고 있다고 생각한다. 이 솔루션과 비교하여 블록을 ccnet.config 파일에 추가하는 것이 얼마나 어려울 수 있습니까? –

+1

우리는 손으로도 그렇게합니다. 네가 할 수 있다고해서 네가해야한다는 뜻은 아니야. 그러나 OP가 요구하는 지점 기능에 대한 자동화 된 빌드를 수행합니다. 즉, 나는 그들이 얼마나 자주 출근 하는지를 모른다. 하루에 수십 번있을 수 있습니다. 컴퓨터는 반복적 인 작업을 수행하도록 설계되었습니다. 맞습니까? – PilotBob

+1

@JoshKodroff 필자는 이것이 의견의 문제라고 생각합니다. "값 비싼"브랜칭은 많은 개발이 한 줄로 묶여 (위험이 증가하는) 이유입니다. 빌드 프로세스를 재구성하기 위해 머신에 로그인하는 것은 분기에 상당한 비용을 추가하는 것처럼 보입니다. –

관련 문제