通过向使用以下命令构建的URI发送请求,我们可以获取已为项目运行的作业:
$uri = sprintf(
'%s/job/%s/job/%s/%d/api/json',
$projectName,
$jenkinsUrl,
urlencode($branchName)
$jobNumber
);
但是,我们只对由用户操作(例如,分支或推送到分支)触发的作业感兴趣,而不是对自动测试触发的作业感兴趣。
要查找由用户触发的作业,我们需要分析大量数据以找到我们感兴趣的作业。请参阅下面的乏味代码。
是否可以在查询中放入查询参数或类似参数以返回仅与返回的“ cause”为“ hudson.model.Cause $ UserIdCause”或“ jenkins.branch.BranchIndexingCause”的结果匹配的结果,而不是将为该端点找到所有条目?
// tedious code to find matching cause.
$result = fetchData($uri);
foreach ($result['actions'] as $action) {
if (isset($action['_class']) === false) {
continue;
}
if ($action['_class'] === 'hudson.model.CauseAction') {
if (isset($action['causes']) === false) {
continue;
}
foreach ($action['causes'] as $cause) {
if ($cause['_class'] === 'jenkins.branch.BranchIndexingCause' ||
$cause['_class'] === 'hudson.model.Cause$UserIdCause') {
// This is the job we want...