스크립팅 된 파이프 라인을 선언적 파이프 라인으로 변환하려고합니다. steps {}
블록 내에서 간단한 if 문을 수행하는 방법을 알고 싶습니다.젠킨스의 선언적 파이프 라인에서 간단한 if 문을 수행하는 방법
stage ('Deploy to Docker') {
steps {
parallel (
"instance1" : {
environment {
containerId = sh(script: "docker ps --quiet --filter name=${fullDockerImageName}", returnStdout: true).trim()
}
steps {
if (containerId.isEmpty()) {
docker.image('some/image').run("--name ${fullDockerImageName}")
}
}
}
)
}
}
이 다음과 같은 예외가 발생합니다
나는steps {}
블록 내부에 간단한
if(..)
을 할 수 있지 않다 때문에
WorkflowScript: 201: Expected a step @ line 201, column 29.
if (containerId.isEmpty()) {
에 어떤 생각이 어떻게 이렇게 할 수 있습니까?
단순한 단계 (존재하는 경우 중지 된 컨테이너 시작 등)에서 더 많은 단계가 발생하므로이 단계를 when {}
으로 전체 단계로 만드는 것은 의미가없는 것처럼 보입니다.
간단한 if를 수행하는 가장 좋은 방법은 무엇입니까?
@ jon-s 이것은 내 다른 질문과 매우 흡사합니다 (https://stackoverflow.com/questions/42277936/assigning-variables-in-a-parallel-step-using-declarative-pipeline-steps-in-jenki). 매우 일반적인 시나리오 (if-statemen t 및 var-assignment)를 사용하여 어쨌든 게시하십시오. 다른 의견이 있습니까? –