curl Jenkins使用特定参数获取上次构建的状态

jtw3ybtb  于 2022-11-13  发布在  Jenkins
关注(0)|答案(1)|浏览(217)

我有一个Jenkins自由式作业(是的,我知道..),如果它正在运行,有时需要等待另一个具有相同参数的作业完成(或者如果它失败了,根本不运行)。
使用curl和Jenkins API,是否可以查询某个作业并获取certainParam=certainValue所在的最后一个构建的状态?
(The我之所以问如何用curl来做这件事,是因为它似乎不可能在自由式作业中做,而且该作业还不能迁移到pipilnes..看起来curl应该是东方的方式..)
先谢谢了!

cyvaqqii

cyvaqqii1#

到目前为止,我知道没有直接的方法来实现它。
我编写了递归脚本,从最后一个构建开始,按每个构建值进行搜索,直到匹配信息。
它打印每个构建URL和查询结果。

相关性

  • jq - install“jq.x86_64”,命令行JSON处理程序
    脚本
#!/bin/bash

user="admin"
pwd="11966e4dd8c33a730abf88e98fb952ebc3"

builds=$(curl -s --user $user:$pwd localhost:8080/job/test/api/json)

urls=$(echo $builds | jq '.builds[] | .url')

while read -r url
do
  url=$(echo $url | sed -nr 's/"([^|]*)"/\1/p')

  # get the build log
  build=$(curl -s --user $user:$pwd "${url}api/json")

  # transform the log in a simple structure
  build=$(echo $build | jq '.result as $result | .actions[].parameters[]? | select(.name == "certainParam") | {(.name): .value, "result": $result}')

  # check if the parameter value and the build result are the expected
  result=$(echo $build | jq 'if .certainParam == "certainValue" and .result == "SUCCESS" then true else false end')

  # print the result of each build
  echo "url=${url}api/json;result=$result"

  if [[ $result == true ]]
  then
    break
  fi
done <<< $urls

结果

请访问jenkins.sh
在此基础上,提出了一种新的测试方法,并对测试结果进行了分析。结果=假
在此基础上,提出了一种新的测试方法,并对测试结果进行了分析。结果=真

相关问题