詹金斯按原因过滤工作

时间:2018-07-02 19:34:42

标签: jenkins

通过向使用以下命令构建的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...

0 个答案:

没有答案