2017-12-12 9 views
0

Jenkins Pipeline에 문제가 있습니다. 그것이 말하는 때문에,Jenkins Pipeline에서 스테이지의 디렉토리가 병렬로 발생하는 문제

pipeline { 
    agent none 
    stages { 
     stage('Build') { 
      parallel { 
       stage('First app') { 
        agent any 
        steps { 
         echo "checkout first app" 
        } 
       } 
       stage('Second app') { 
        agent any 
        steps { 
         echo "checkout second app" 
        } 
       } 
      } 
     } 
     stage('Test') { 
      parallel { 
       stage('First app') { 
        agent any 
        steps { 
         echo 'test First app' 
        } 
        post { 
         always { 
          junit 'build/*.xml' 
         } 
        } 
       } 
       stage('Second app') { 
        agent any 
        steps { 
         echo "test second app" 
        } 
        post { 
         failure { 
          echo "failure" 
         } 
        } 
       } 
      } 
     } 
     stage('Deploy') { 
      echo "Deploy all 
     } 
    } 
} 

나는 그것이 어떻게 작동하는지 정확히 이해하지 않는다 : 나는 병렬로 두 내가 체크 아웃 할 응용 프로그램과 검사를

[First app] Running on maître in /var/lib/jenkins/workspace/My Project 
[Second app] Running on maître in /var/lib/jenkins/workspace/My [email protected] 

그러나 테스트 단계의 작업 공간 전환에

:

[Second app] Running on maître in /var/lib/jenkins/workspace/My Project 
[First app] Running on maître in /var/lib/jenkins/workspace/My [email protected] 

내 테스트의 무대는 적합하지 않습니다.

이 문제를 해결하려면 어떻게해야합니까?

답변

1

각 병렬 단계에 대해 실행하는 동안 자신의 Jenkins가 본 것처럼 작업 영역을 복제합니다.

코드를 체크 아웃하기위한 병렬 단계와 테스트를위한 다른 병렬 단계를 가질 수 없습니다. 평행선을 두 번 가지지 않고도 체크 아웃과 테스트를 동일한 단계에서 수행 할 수 있습니다. 하나의 병렬 만 :

agent none 
    stages { 
     stage('Build&Test') { 
      parallel { 
       stage('First app') { 
        agent any 
        steps { 
         echo "checkout first app" 
         echo "test first app" 
        } 
       } 
       stage('Second app') { 
        agent any 
        steps { 
         echo "checkout second app" 
         echo "test second app" 
        } 
       } 
      } 

동일한 파이프 라인에서 서로 다른 저장소 리포지토리를 혼합하는 것은 좋지 않습니다.

+0

답변 해 주셔서 감사합니다. 흥미로운 부분이기 때문에 두 개의 파이프 라인을 만들어 멀티 파이프 라인으로 실행하는 것이 좋습니다. –

+0

네, 이것은 가장 좋은 옵션입니다. 각 저장소에 대한 개별 파이프 라인과 병렬로 실행하려면 부모 파이프 라인을 사용해야하지만 여전히 다른 작업 영역이 있어야합니다. 답변의 유효성을 확인하는 것을 잊지 마세요.) –