在下面的示例中,我希望能夠從引數中選擇在任何階段開始作業。'when' 條件確實有幫助,但我不知道如何讓它從 stage2 開始,然后完成它之后的所有階段。當前如下所示,它只會執行為 START_AT 引數選擇的階段,并跳過所有其他階段。
pipeline {
agent any
parameters {
choice(name: 'START_FROM', choices: ['stage1', 'stage2', 'stage3'], description: 'Choose which step to start the job on.')
}
stages {
stage('stage1') {
when {
expression { params.START_FROM == 'stage1' }
}
steps {
echo "stage1 executing"
}
}
stage('stage2') {
when {
expression { params.START_FROM == 'stage2' }
}
steps {
echo "stage1 executing"
}
}
stage('stage3') {
when {
expression { params.START_FROM == 'stage3' }
}
steps {
echo "stage1 executing"
}
}
}
}
uj5u.com熱心網友回復:
您可能必須巧妙處理您的時間,這很痛苦。{} 首先有一個“從哪個階段開始”的引數將是指示管道將從哪里開始的第一種方式。對于這個例子,我們稱之為stageStart
然后你可以有另一個標志來指示一個人是否可以“繼續”。讓我們稱之為continueStages。
對于您的每個階段,您when{}都可以在其中設定如下格式:
when {expression {return "${stageStart}" == "stage2" || "${continueStages}" == "true"}}
那么這里的邏輯就是你設定continueStage為false。當您進入階段時,將該 var 設定為 true。除非stageStart與階段名稱匹配,否則不會進入第一階段。然后將進入之后的每個階段。它看起來像這樣:
continueStages = "false"
pipeline {
agent any
parameters {
choice(name: 'START_FROM', choices: ['stage1', 'stage2', 'stage3'], description: 'Choose which step to start the job on.')
}
stages {
stage('stage1') {
when {
expression { return {"${stageStart}" == "stage1"} }
}
steps {
continueStages = "true"
echo "stage1 executing"
}
}
stage('stage2') {
when {
expression { return {"${stageStart}" == "stage2" || "${continueStages}" == "true"}}
}
steps {
continueStages = "true"
echo "stage1 executing"
}
}
stage('stage3') {
when {
expression { return {"${stageStart}" == "stage3" || "${continueStages}" == "true"} }
}
steps {
continueStages = "true"
echo "stage1 executing"
}
}
}
}
附錄,我想將其設定為您可以在構建時在 Jenkins 中設定的引數。如果你以不同的方式實作它,這個邏輯仍然有效,你只需要改變你的語法(比如不要使用return{})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/326196.html
