如何在 Jenkins 上轮询 REST 端点?
How to do polling for REST endpoint on Jenkins?
在我创建的 Jenkins 管道上,我发出了一次 POST curl 请求。但是,由于这项工作首先进入队列,我需要等到工作完成。这是我的命令示例
curl -X POST -H "Content-Type: application/json" \
-d '{"source_path": "source/path/example", "destination_path": "destination/path/example"}' \
http://example.com/v1/postJob
这个returns一个JSON响应{"jobID": 1234}
我希望 Jenkins 作业保持 'running' 状态,直到 GET 端点 returns “状态”:成功。 GET 端点 returns 一个 JSON 主体,其中包含一个字段 'status',指示作业是否已完成。这是 GET 端点
curl http://example.com/v1/jobs/1234
这个returns一个JSON响应
{
"job": 1234,
"status": success
}
谁能给我提供一个无需使用 Jenkinsfile 即可直接在 Jenkins 上实现的轮询示例?
对于 bash 上的端点轮询,此代码片段应该可以解决问题
GETURL="http://exmple.com/v1/tasks/${TASK_ID}"
while true;
do
STATUS=$(curl $GETURL | jq -r '.status'); //'status' is to check JSON response field
echo ${STATUS}
if [[ "$STATUS" == "succeeded" ]]; then
break;
fi;
sleep 2700; //The endpoint will be hit again after 2700 seconds
done
在我创建的 Jenkins 管道上,我发出了一次 POST curl 请求。但是,由于这项工作首先进入队列,我需要等到工作完成。这是我的命令示例
curl -X POST -H "Content-Type: application/json" \
-d '{"source_path": "source/path/example", "destination_path": "destination/path/example"}' \
http://example.com/v1/postJob
这个returns一个JSON响应{"jobID": 1234}
我希望 Jenkins 作业保持 'running' 状态,直到 GET 端点 returns “状态”:成功。 GET 端点 returns 一个 JSON 主体,其中包含一个字段 'status',指示作业是否已完成。这是 GET 端点
curl http://example.com/v1/jobs/1234
这个returns一个JSON响应
{
"job": 1234,
"status": success
}
谁能给我提供一个无需使用 Jenkinsfile 即可直接在 Jenkins 上实现的轮询示例?
对于 bash 上的端点轮询,此代码片段应该可以解决问题
GETURL="http://exmple.com/v1/tasks/${TASK_ID}"
while true;
do
STATUS=$(curl $GETURL | jq -r '.status'); //'status' is to check JSON response field
echo ${STATUS}
if [[ "$STATUS" == "succeeded" ]]; then
break;
fi;
sleep 2700; //The endpoint will be hit again after 2700 seconds
done