0

CI 인프라 스트럭처에 컨테이너와 2 개의 슬레이브 (VM)로 실행되는 jenkins 마스터가 있습니다. 노드에서 도커 컨테이너 내부에서 빌드를 실행하려고합니다. 빌드 프로세스 중에 대상 노드를 숨겨서 나중에 다른 노드에서 사용하게했습니다. 작업 로그에 폴더가 성공적으로 숨겨져 있음을 알 수 있습니다. 빌드가 완료되면 컨테이너가 자동으로 파괴되고 다음 단계에서 폴더를 잠금 해제하여 별도의 노드에서 다른 단계를 수행하지만 아무런 일도 일어나지 않습니다. 언 스토크처럼 보이지 않습니다.빌드 컨테이너에서 다른 노드로 데이터를 전송하기 위해 stash/unstash (젠킨스에서)

plz 어떻게 컨테이너에서 다른 노드로 또는 내 마스터로 내 대상을 전송할 수 있습니까 ???

이 내 파이프 라인 코드 :

node('docker') { 
 
    stage('Checkout Code') { 
 
     checkout scm 
 
      } 
 
    stage('Build') { 
 
    withMaven(jdk: 'jdk_8', maven: 'maven 3') { 
 
     mvn 'clean install' 
 
     stash name: 'war', includes: 'x.war' 
 
    } 
 
    } 
 

 
node('master') { 
 
    stage('test') { 
 
    withMaven(jdk: 'jdk_8', maven: 'maven 3') { 
 
     unstash : \t 'war' 
 
     sh 'mvn clean test' 
 
    } 
 
    } 
 
} 
 
}

답변

1

내가 생성 된 전쟁은 당신이 mvn clean install을 실행 한 동일한 디렉토리에 있으면 안하기 때문에 전쟁이 실제로 은닉되고 있음을 의심한다.

나는 전쟁이 표적이 될 것으로 예상한다. includes: 'x.war'includes: 'target/x.war'으로 변경할 수 있습니다. 또는 전쟁이 설치된 maven 저장소로 이동하여 파일을 숨긴다.

withMaven(jdk: 'jdk_8', maven: 'maven 3') { 
    mvn 'clean install' 
    dir('<path to war>'){ 
     stash name: 'war', includes: 'x.war' 
    } 
} 
관련 문제