目前,使用此脚本,管道正在无限期地等待用户输入,我希望能够像
一样进行更改如果userinput继续,则继续,如果userinput中止然后中止,如果在60秒内没有用户输入则中止。 我怎么做 ?我对这个脚本做了哪些更改?
node {
stage('dev') {
build job: '11', propagate: false
}
stage('test') {
build job: '12', propagate: false
}
input 'Do you want to proceed to the Deployment?'
stage('prod') {
build job: '13', propagate: false
}
}
答案 0 :(得分:7)
首先要注意的是,最好不要为输入分配节点,否则它将保持该节点直到超时或直到处理输入。
暂停输入:
node {
stage('dev') {
build job: '11', propagate: false
}
stage('test') {
build job: '12', propagate: false
}
}
timeout(time: 60, unit: 'SECONDS') {
input 'Do you want to proceed to the Deployment?'
}
node {
stage('prod') {
build job: '13', propagate: false
}
}
您应该在输出中看到类似的内容:
[Pipeline] // node
[Pipeline] timeout
Timeout set to expire in 1 min 0 sec
[Pipeline] {
Do you want to proceed to the Deployment?
Proceed or Abort
[Pipeline] input
另一种解决方案是使用里程碑插件:
node {
stage('dev') {
build job: '11', propagate: false
}
stage('test') {
build job: '12', propagate: false
}
}
input 'Do you want to proceed to the Deployment?'
milestone 1
node {
stage('prod') {
build job: '13', propagate: false
}
}
而不是超时,这将无限期地等待输入,但如果另一个构建运行并通过里程碑1,那么任何尚未通过里程碑1的先前构建将被中止。
或者您可以将其全部包含在超时中,以便为输入超时提供有用的灵活性。
timeout ( time: 24, unit: "HOURS" ) {
input 'Do you want to proceed to the Deployment?'
milestone 1
}