我試圖將我的腳本管道轉換爲聲明式管道。 想知道如何在steps {}
塊中做簡單的if語句。如何在Jenkins的聲明式管道中執行簡單的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}")
}
}
}
)
}
}
這將導致以下異常:
WorkflowScript: 201: Expected a step @ line 201, column 29.
if (containerId.isEmpty()) {
因爲我不能做一個簡單的if(..)
一個steps {}
塊內,對任何想法如何做到這一點?
由於在簡單的階段中發生了更多的步驟(如果它存在等起始已停止的容器等),因此將其設置爲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),所以無論如何發佈它。 也許你對此有不同的見解? –