2017-02-16 3 views
1

젠킨스에서 멀티 브랜치 파이프 라인 프로젝트를 구성했습니다. 이 프로젝트는 내 모든 지사 (git)에서 통합 테스트를 실행합니다. 파이프 라인 프로젝트의 각 작업에 대해 내 webapp (시작 바람둥이 및 기타 종속성)의 인스턴스를 만듭니다. 포트 바인딩 문제로 인해 많은 부서진 작업이 발생합니다.병렬 대신 멀티 브랜치 프로젝트 순차 작업을 실행하는 방법

멀티 기능 파이프 라인 프로젝트에서 빌드를 스로틀하여 각 기능 분기의 작업이 병렬 대신 순차적으로 실행될 수 있습니까?

아니면 더 좋은 해결책이 있습니까?


편집 : 상황과 문제 :

  • 으로부터 생성
  • 일자리 (나는 자식의 많은 기능 지점을 가지고 있기 때문에) 나는 젠킨스의 multibranch 파이프 라인 프로젝트를 갖고 싶어 multibranch 파이프 라인 (git의 각 기능 분기 별)은 병렬로 실행됩니다.
    • 폴링 scm은 자정에 있습니다 (x 분기에 대한 커미트가 신규이므로 관련 작업이 자정)
  • 모든 작업은 일부 포트

문제는 자정에 이러한 작업의 대부분이 시작할 수있다 바인딩 내 웹 애플리케이션 (및 기타 종속)의 인스턴스를 시작했다. 모든 작업은 내 웹 응용 프로그램의 인스턴스를 시작하려고합니다. 첫 번째 작업은 문제없이 webapp를 시작할 수 있습니다. 두 번째 작업은 포트가 이미 첫 번째 인스턴스에서 가져 왔기 때문에 webapp을 시작할 수 없습니다.

git 저장소의 각 기능 분기에 대해 새 포트 바인딩을 구성하고 싶지 않습니다. multibranch 파이프 라인의 빌드를 조정하여 "feature"만 동시에 실행할 수있는 솔루션이 필요합니다.

답변

0

가장 효율적인 해결책은 통합 테스트를 동시에 실행할 수있게하는 것입니다.

한 가지 해결책은 동적 포트가있는 포함 된 톰캣을 사용하는 것입니다. 그런 식으로 각 작업 인스턴스는 서로 다른 포트를 가진 tomcat에서 실행됩니다. 이것은 외부 서버를 사용하는 것보다 나은 솔루션입니다. 이 너무 많은 작업 인 경우

, 당신은 항상 "jenkinsfile"파이프 라인에 다음 코드를 사용할 수 있습니다

node { 
    // This limits build concurrency to 1 per branch 
    properties([disableConcurrentBuilds()]) 

    // continue your pipeline ... 

} 

이 솔루션은 this SO answer에서 온다.