重试块不起作用。它只执行一次。
我使用echo和error测试了retry块,它会重试指定的次数。但在测试timeout时,重试只执行一次。
pipeline {
agent any
stages {
stage("Deploy") {
steps {
retry(3) {
timeout(time: 1, unit: 'SECONDS') {
sleep 3
}
}
echo "after timeout"
}
}
}
}日志:
Started by user admin
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/jenkins_home/workspace/pipeline-stage-steps-retry-timeout
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Deploy)
[Pipeline] retry
[Pipeline] {
[Pipeline] timeout
Timeout set to expire in 1 sec
[Pipeline] {
[Pipeline] sleep
Sleeping for 3 sec
Cancelling nested steps due to timeout
[Pipeline] }
[Pipeline] // timeout
[Pipeline] }
[Pipeline] // retry
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Timeout has been exceeded
Finished: ABORTED如果我尝试超时30秒和睡眠50秒,它仍然不起作用。
Started by user admin
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/jenkins_home/workspace/5. pipeline-stage-steps-retry-timeout
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Deploy)
[Pipeline] retry
[Pipeline] {
[Pipeline] timeout
Timeout set to expire in 30 sec
[Pipeline] {
[Pipeline] sleep
Sleeping for 50 sec
Cancelling nested steps due to timeout
[Pipeline] }
[Pipeline] // timeout
[Pipeline] }
[Pipeline] // retry
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Timeout has been exceeded
Finished: ABORTED代码:
pipeline {
agent any
stages {
stage("Deploy") {
steps {
retry(3) {
timeout(time: 30, unit: 'SECONDS') {
sleep 50
}
}
echo "after timeout"
}
}
}
}发布于 2021-03-20 21:15:24
它无法工作,因为您将超时设置为1秒。
设置至少1分钟或至少30秒
timeout(time: 1, unit: 'MINUTES')发布于 2021-03-27 22:35:11
在retry块中使用timeout时,这似乎是一个已知的问题:
你必须自己去捕捉异常
以下是解决此问题的方法:
注意:try-catch子句在timeout块内,不包含timeout块
pipeline {
agent any
stages {
stage("Deploy") {
steps {
retry(3) {
timeout(time: 1, unit: 'SECONDS') {
script{
try {
sleep(3)
} catch (err) {
error 'Timeout has been exceeded'
}
}
}
}
echo "after timeout"
}
}
}
}https://stackoverflow.com/questions/66721998
复制相似问题