curl - 每 1 秒运行一次 cURL 命令,直到满足条件
问题描述
创建票证后,我需要不断检查状态(每 1 秒),直到它返回为approved
或rejected
。然后,我想退出循环。有人知道这样做的干净方法吗?
stages {
stage('Open and Check ticket status’) {
steps {
script {
dockerImage.inside(" -u root ") {
// Open ticket
withCredentials([string(credentialsId: JENKINS_API_KEY, variable: 'API_KEY')]) {
cmd = "curl -X POST -H 'x-api-key:${API_KEY}' '${URL}/requests' | jq -r '.requestId'"
REQUEST_ID = sh(script: cmd, returnStdout: true).trim()
print(REQUEST_ID)
}
// Check ticket Status
withCredentials([string(credentialsId: JENKINS_API_KEY, variable: 'API_KEY')]) {
cmd = "curl -X GET -H 'x-api-key:${API_KEY}' '${URL}/requests/${REQUEST_ID}' | jq -r '.requestStatus'"
REQUEST_STATUS = sh(script:cmd, returnStdout: true).trim()
print(REQUEST_STATUS)
}
}
}
}
}
}
解决方案
您可以使用 while 循环尝试此操作.. 我相信它有效..
// 检查票状态
withCredentials([string(credentialsId: JENKINS_API_KEY, variable: 'API_KEY')])
{
while ({
cmd = "curl -X GET -H 'x-api-key:${API_KEY}' '${URL}/requests/${REQUEST_ID}' | jq -r '.requestStatus'"
REQUEST_STATUS = sh(script:cmd, returnStdout: true).trim()
print(REQUEST_STATUS)
sleep('time': 1,'unit':"SECONDS")
!["approved","rejected"].contains(REQUEST_STATUS)
}()) continue
}
推荐阅读
- python - 使用 np.memmap 读取数据流
- spring-boot - 缺少 JSON 密钥(在带有 kotlin 的 Spring-boot 上使用 @JsonComponent)
- javascript - 根据两个对象数组之间的比较创建新数组
- routes - Nuxt 路由 - 动态路由的路由和子路由中的破折号/连字符?
- flutter - 在颤振中以正确的方式使用其构造函数编写类时出错
- python - 部署搬运工时 docker-compose 错误
- python - 在python中的dict中存储动态变量
- sql - VSQL 正在使用 perl 脚本而不是在 cronjob 中生成输出文件
- java - 使用 geotools java 库从 WFS 获取数据
- typescript - Typescript 如何在遗留模式下使用库和插件