2012-04-12 2 views
3

빌드 프로세스를 자동화하고 싶습니다.Jenkins가 변수 SVN URL을 사용하여 여러 구성을 만들도록

우리는 각각 다른 SVN 분기를 가진 30 개 이상의 구성을 가지고 있습니다. 이상적으로는 유지 보수 노력과 인적 오류의 위험으로 인해 30 개의 별도 젠킨스 작업을 작성하지 않아도됩니다.

Jenkins의 "다중 구성 프로젝트"가 설계되었지만 불행히도 Jenkins는 SVN URL에서 구성 매트릭스 축 사용을 지원하지 않습니다.

나는 또한 젠킨스는 변수가 로컬 체크 아웃 경로에 사용되는 것을 허용하지 않기 때문에, 매개 변수화 된 빌드를 사용하여 빌드 할 수 없습니다

(URL에 변수가 잘 작동하지만, 그들은 항상) (문자 ${BRANCH}라는 디렉토리에가는 끝.

https://domain.ext/something/${BRANCH}/을 확인하고 /some/path/${BRANCH}으로 저장하고 싶습니다 .Jenkin의 기본 제공 SCM 기능을 활용할 수있는 방식으로 완료하면 더 좋을 것입니다. 예 : 폴링)

젠킨스가 달성하려는 것을 이해하려면 어떻게해야합니까?

답변

1

내가 볼 수있는 선을 따라 뭔가를하는 두 가지 방법이 있습니다. 하나의 프로젝트에 모든 브랜치를 추가하거나 (config에 "add location"을 통해) 다른 디렉토리에 체크하고 "수동으로"무엇이 변경되었는지 (또는 모든 것을 빌드하는지) 파악할 수 있습니다. 이는 구성 축이 다른 체크 아웃 위치 인 다중 구성 작업과 통합 될 수 있습니다. 즉 모든 구성이 매개 변수를 통해 다른 작업 디렉토리를 얻습니다.

다른 방법은 Jenkins에게 저장소에 대해 알리는 것이 아니라 수동으로 빌드 (예 : SVN 커밋 훅)를 실행하고 소스를 첫 번째 빌드 단계로 체크 아웃하는 것입니다. 다시 이것은 위에 개략 된 것과 유사한 라인을 따라 다중 구성 프로젝트로 수행 될 수 있습니다.

0

저는 Jenkins가 SVN 저장소를 매우 높은 수준에서 체크 아웃하여 필요한 모든 지점을 포함하도록했습니다. 그것은 이상적인 솔루션은 아니지만, 왜냐하면 당신은 시간이 'svn update'실행에 대한 에 대한 모든 시간을 잃을입니다.

0

작은 규모의 비슷한 문제가있었습니다. 동일한 구성이지만 다른 SVN 경로를 사용하여 트렁크와 분기를 빌드해야했습니다.

첫 번째 시도는 체크 아웃 URL에서 $ SVN_BRANCH를 사용하고 문자열 매개 변수로 설정했습니다. 수동 사용으로 잘 작동했지만 매트릭스 작업에서는 작동하지 않았습니다 (Aleksi는 이미 지적한 바 있음). 행렬 빌드로 할 수 있었던 모든 것은 어떻게 든 추한 것처럼 보이는 후속 작업으로서 매개 변수화 된 작업을 트리거하는 것이 었습니다.

이제 "Jobcopy Builder 플러그인"이 사용되었습니다. 초기 작업을 비활성화하고 템플릿으로 사용했습니다. 복사 작업에는 비활성화 된 작업을 복사하는 "복사 작업"빌드 단계가 있으며 $ SVN_BRANCH가 실제 분기 이름 (트렁크 또는 분기/some_branch)으로 대체되고이 두 작업이 활성화됩니다. 또한 "덮어 쓰기"옵션을 선택했기 때문에 "작업 복사"를 실행 한 후 모든 작업 구성이 업데이트되고 빌드 기록이 보존됩니다.

관련 문제