命令无法进入while循环判断重启了几次
时间: 2023-10-10 22:04:39 浏览: 113
根据您提供的代码片段,我注意到您的 while 循环中缺少对 restart_count 和 max_restart_count 的更新。这可能导致循环无法正常工作。下面是对您的代码进行修改以解决此问题的建议:
```groovy
stage('Deploy') {
when {
expression { "${IS_DEPLOY}" == "true" }
}
steps {
sh "pwd"
sh "sed -i s#APP_NAME#${APP_NAME}#g deployment-${NAMESPACE}.yaml && sed -i s#TAG_TO_REPLACE#${IMAGE_TAG}#g deployment-${NAMESPACE}.yaml && sed -i s#IMAGE_TO_REPLACE#${IMAGE_NAME}#g deployment-${NAMESPACE}.yaml"
sh "kubectl apply -f deployment-${NAMESPACE}.yaml -n ${NAMESPACE}"
script {
def max_restart_count = 1
def restart_count = 0
while (true) {
def status = sh(returnStdout: true, script: "kubectl rollout status deployment ${APP_NAME} -n ${NAMESPACE}").trim()
if (status.contains("successfully rolled out")) {
echo "Deploy ${APP_NAME} rolled out successfully"
break
}
restart_count = sh(returnStdout: true, script: "kubectl get pods -l app=${APP_NAME} -n ${NAMESPACE} -o jsonpath='{range .items[*]}{@.status.containerStatuses[0].restartCount}{'\n'}{end}' | awk '{sum+=$1}END{print sum}'").trim().toInteger()
if (restart_count > max_restart_count) {
error "Pod restart count exceeded the threshold. Deployment ${APP_NAME} failed."
break
}
sleep 5
}
}
}
}
```
在这个修改后的代码中,我使用了 Groovy 的脚本块来执行 while 循环,并使用 `sh` 命令获取命令的输出。我还添加了对 restart_count 和 max_restart_count 的更新,以便在循环中进行正确的判断。
请注意,我还将 `kubectl` 命令的输出使用 `trim()` 方法进行修剪,并将其转换为整数类型以进行比较。
希望这可以解决您的问题!如果您有其他问题,请随时提问。
阅读全文