다른 파이프 라인 스크립트에서 파이프 라인 스크립트를로드 할 때 두 파이프 라인은 동일한 노드에서 실행되지 않습니다. 첫 번째 파이프 라인은 마스터 노드에서 실행되고 두 번째 파이프 라인은 슬레이브 노드에서 실행됩니다. 저장소가 자동으로 할 때 폴링 가도록 (듯이)같은 젠킨스 노드에서 다른 그루비 스크립트를로드하는 방법은 무엇입니까?
내 작업의각
Poll SCM
옵션을 자신의 해당 망할 놈의 repo URL을 정의 :이 방법으로 많은 일을 위해Pipeline Script from SCM
옵션 젠킨스 파이프 라인을 사용하고내 코드가 변경되었습니다 (기본 작업 사용).
각 작업은 리포지토리의 루트에
Jenkinsfile
을 간단하게 정의하고 파이프 라인 스크립트는 기본적으로 더 일반적인 파이프 라인을로드하는 것 외에는 아무것도 수행하지 않습니다.
예 : :
node {
// --- Load the generic pipeline ---
checkout scm: [$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'http://github/owner/pipeline-repo.git']]]
load 'common-pipeline.groovy'
}()
내 공통 pipeline.groovy 파이프 라인은, 예를 들어, 해제 또는 아티팩트를 배포, 같은 건물로 실제 물건을한다 :
{ ->
node() {
def functions = load 'common/functions.groovy'
functions.build()
functions.release()
functions.deploy()
}
}
지금 나는 그러나 내가 한 번 그렇게하고 싶습니다, 정말 수동으로 처리 할 수 싶지 않기 때문에 그래서 모두 파이프 라인 node("master")
또는 node("remote")
이 각 작업에 대해 노드를 강제로하지 않을 특정 노드의 첫 번째 파이프 라인 실행 (마스터, slave3SLAVE1, slave2, 중), 그렇지 않으면 내 실제 Git 저장소의 코드가 서로를 사용할 수 없기 때문에 두 번째 /로드 파이프 라인은, 동일한 노드에서 실행됩니다 노드의 작업 공간 ...
load
단계를 사용할 때 두 번째 파이프 라인을 첫 번째 노드와 동일한 노드에서 실행하거나 인수를 전달하도록 지정할 수있는 방법이 있습니까?
나는이 내 문제를 해결 거 어떻게 표시되지 않는 이유는 무엇입니까? 첫째, 별도의 트리거 된 작업을 원하지 않습니다. 이로 인해 동시성 문제가 발생할 수 있습니다 (동시에 실행되는 10 개의 서비스가 두 번째 매개 변수화 된 작업이 순차적으로 실행될 때까지 기다려야 할 것입니다). 그래서 파이프 라인을 사용합니다. 서로 다른 작업에서 동일한 코드를 실행할 수 있어야합니다. 둘째, 솔루션을 사용하더라도 두 번째 작업에 대해 매개 변수 'runhereParam'을 어디에서 얻을 수 있습니까? 동일한 노드에서 실행하려면 내 파이프 라인의 두 부분이 필요합니다! – Pom12