0

일부 단계에서 사용자 확인이 필요한 CD 파이프 라인이 있으므로 파이프 라인이 사용자 입력을 기다리는 동안 서버 리소스를 확보하고 싶습니다. 당신은 그 이상으로 볼 수Jenkins 2 선언 파이프 라인 - 노드 (에이전트 any)에서 모든 단계를 실행할 수 있지만 일부 인스턴스는 실행하지 않고 실행할 수 있습니까?

pipeline { 
    agent any 
    stages { 
    stage ('Build Stage') { 
     steps { 
     ... 
     } 
    } 
    stage ('User validation stage') { 
     agent none 
     steps { 
     input message: 'Are you sure you want to deploy?' 
     } 
    } 
    stage ('Deploy Stage') { 
     steps { 
     ... 
     } 
    } 
    } 
} 

나는 글로벌 agent any을 가지고 있지만 사용자 검증 단계에서 나는 agent none을 추가했습니다.

내가 원한 것을 누군가가 확인할 수 있습니까? (에이전트/노드가 사용자 입력을 기다리고 있지 않습니까?) 확인하는 방법을 모르겠지만 실행 로그에는 차이가 없습니다 ...

그렇지 않으면 어떻게해야합니까?

+0

여기에 응답이 있습니다. https://stackoverflow.com/questions/42159221/use-a-lightweight-executor-for-a-declarative-pipeline-stage-agent-none –

+0

괜찮아 보이지만 여전히 몇 가지 질문이 제기됩니다. , 같은 레이블을 사용하면 다른 단계에서 다른 노드 (작업 영역)를 얻을 수 있습니까? 우리는 어떻게 대응할 수 있습니까? – codependent

답변

0

예상대로 작동하지 않습니다. 전체 파이프 라인에 agent any을 지정할 수 없으며 agent none이 실행 프로그램을 점유하지 않을 것으로 예상합니다. 이것을 증명하기 위해

당신이 그것을 가지고, 당신은이 코드를 실행할 수 있습니다, 그리고 그것은 input 단계에서 기다리는 동안, 메인 젠킨스 페이지로 이동하여 빌드 집행자 상태 봐. 집행자가 계속 직장을 운영하고있는 것을 볼 수 있습니다.

다음으로 파이프 라인을 agent none으로 바꾸고 다른 단계 (입력 단계 제외)에 agent any을 추가하고 동일한 테스트를 수행하십시오. 입력 단계에서 기다리는 동안 집행자 중 누구도 점령되지 않았다는 것을 알 수 있습니다.

다른 노드의 다른 작업 공간에 관해서 ... SCM의 코드를 사용한다고 가정 할 때 모든 새 노드에서 체크 아웃되므로 걱정할 필요가 없습니다. 걱정할 필요가있는 것은 각 단계에서 만든 아티팩트뿐입니다.

젠킨스가 너를 거기에서 지키려고 시도하더라도 동일한 노드에 머무를 것이라고 "희망"하는 것은 안전하지 않습니다. 그러나 그때조차도 동일한 작업 공간 디렉토리를 확보한다는 보장은 없습니다.

이 문제를 해결하는 올바른 방법은 나중 단계에서 필요로하는 파일을 만들거나 수정 한 모든 파일을 stash으로 만드는 것입니다. 그런 다음 다음 단계에서 unstash 필요한 파일. 파일이 자신의 노드 선언이있는 단계 사이에서 파일을 만들 것이라고 가정하지 마십시오.

+0

정보를 제공해 주셔서 감사합니다. 몇 가지 의심 : stashing 할 때 고유 한 이름을 사용해야합니까? 예를 들어 "stashedArtifact"+ buildNumber를 연결합니다. 전쟁이나 병 파일과 같은 유물을 최대 80MB까지 저장하는 데 문제가 있습니까? – codependent

+0

원하는 이름을 지정하고이를 사용하여 잠금 해제 할 수 있습니다. 그러나 나는 여러 번 숨기려면 같은 이름을 사용하는 것이 어떤 영향을 미치는지 모른다. 그것은 clobber 또는 결합 할 것인가? 확실하지 않다. 크기에 대한 질문은 다음 문서의 답변을 참조하십시오. https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/#code-stash-code-stash-some-files-to-be- 나중에 사용되는 빌드 –