Могу ли я определить, завершена ли сборка Jenkins по URL-адресу очереди? - PullRequest
3 голосов
/ 10 февраля 2020

Я пытаюсь запустить сборку Jenkins и жду, пока она не будет завершена.

Когда я запускаю Jenkins через его REST API, я получаю резонанс с URL-адресом вроде http://JENKINS_URL:8080/queue/item/36285/.

Когда я пытаюсь получить к нему доступ, я всегда получаю ошибку 404. Мои тестовые сборки довольно короткие, поэтому возможно, что они завершены до того, как я выйду из отладчика.

Вопрос: Гарантируется ли, что если URL, такой как http://JENKINS_URL:8080/queue/item/36285/, даст ответ 404, то соответствующая сборка Jenkins закончен? То есть можно ли использовать этот URL-адрес, чтобы узнать, завершен ли он (если URL-адрес возвращает код состояния, не равный 404, сборка выполняется)?

1 Ответ

3 голосов
/ 12 февраля 2020

/queue/item/ дает вам элементы в очереди, которые ожидают запуска, а 404 означает, что элемент не в очереди, может быть отменен или выполнен. Выполнение задания может быть в состоянии «Выполнено», «Завершено» или «Отменено».

Вы можете использовать queueId (36285 в вашем примере), получить сведения о задании и получить статус сборки для конкретного queueId. В ответе на запрос ниже указаны детали работы со сборками. Вы можете найти нужную сборку по queueId в builds и получить building (логическое значение) и result статус:

JENKINS_URL+"/job/"+ artifactToBuild +"/api/json?depth=1'

Пример ответа для JENKINS_URL+"/job/"+ artifactToBuild +"/api/json?depth=1':

{
  "_class": "org.jenkinsci.plugins.workflow.job.WorkflowJob",
  "actions": [],
  "description": "",
  "displayName": "my_job_name",
  "displayNameOrNull": null,
  "fullDisplayName": "my_job_name",
  "fullName": "my_job_name",
  "name": "my_job_name",
  "url": "http://localhost:8080/job/my_job_name/",
  "buildable": true,
  "builds": [
    {
      "_class": "org.jenkinsci.plugins.workflow.job.WorkflowRun",
      "actions": [],
      "artifacts": [],
      "building": false,
      "description": null,
      "displayName": "#1",
      "duration": 1651,
      "estimatedDuration": 1671,
      "executor": null,
      "fullDisplayName": "my_job_name #1",
      "id": "1",
      "keepLog": false,
      "number": 1,
      "queueId": 103,
      "result": "SUCCESS",
      "timestamp": 1580946018635,
      "url": "http://localhost:8080/job/my_job_name/1/",
      "changeSets": [],
      "culprits": [],
      "nextBuild": {
        "number": 2,
        "url": "http://localhost:8080/job/my_job_name/2/"
      },
      "previousBuild": null
    }
  ],
  "color": "aborted",
  "firstBuild": {},
  "healthReport": [
    {
      "description": "Build stability: No recent builds failed.",
      "iconClassName": "icon-health-80plus",
      "iconUrl": "health-80plus.png",
      "score": 100
    }
  ],
  "inQueue": false,
  "keepDependencies": false,
  "lastBuild": {
    "_class": "org.jenkinsci.plugins.workflow.job.WorkflowRun",
    "actions": [],
    "artifacts": [],
    "building": false,
    "description": null,
    "displayName": "#10",
    "duration": 1238044,
    "estimatedDuration": 1671,
    "executor": null,
    "fullDisplayName": "my_job_name #10",
    "id": "10",
    "keepLog": false,
    "number": 10,
    "queueId": 587,
    "result": "ABORTED",
    "timestamp": 1581534463735,
    "url": "http://localhost:8080/job/my_job_name/10/",
    "changeSets": [],
    "culprits": [],
    "nextBuild": null,
    "previousBuild": {
      "number": 9,
      "url": "http://localhost:8080/job/my_job_name/9/"
    }
  },
  "lastCompletedBuild": {
    "_class": "org.jenkinsci.plugins.workflow.job.WorkflowRun",
    "actions": [],
    "artifacts": [],
    "building": false,
    "description": null,
    "displayName": "#10",
    "duration": 1238044,
    "estimatedDuration": 1671,
    "executor": null,
    "fullDisplayName": "my_job_name #10",
    "id": "10",
    "keepLog": false,
    "number": 10,
    "queueId": 587,
    "result": "ABORTED",
    "timestamp": 1581534463735,
    "url": "http://localhost:8080/job/my_job_name/10/",
    "changeSets": [],
    "culprits": [],
    "nextBuild": null,
    "previousBuild": {
      "number": 9,
      "url": "http://localhost:8080/job/my_job_name/9/"
    }
  },
  "lastFailedBuild": null,
  "lastStableBuild": {
    "_class": "org.jenkinsci.plugins.workflow.job.WorkflowRun",
    "actions": [],
    "artifacts": [],
    "building": false,
    "description": null,
    "displayName": "#2",
    "duration": 1671,
    "estimatedDuration": 1671,
    "executor": null,
    "fullDisplayName": "my_job_name #2",
    "id": "2",
    "keepLog": false,
    "number": 2,
    "queueId": 105,
    "result": "SUCCESS",
    "timestamp": 1580946027378,
    "url": "http://localhost:8080/job/my_job_name/2/",
    "changeSets": [],
    "culprits": [],
    "nextBuild": {
      "number": 3,
      "url": "http://localhost:8080/job/my_job_name/3/"
    },
    "previousBuild": {
      "number": 1,
      "url": "http://localhost:8080/job/my_job_name/1/"
    }
  },
  "lastSuccessfulBuild": {
    "_class": "org.jenkinsci.plugins.workflow.job.WorkflowRun",
    "actions": [],
    "artifacts": [],
    "building": false,
    "description": null,
    "displayName": "#2",
    "duration": 1671,
    "estimatedDuration": 1671,
    "executor": null,
    "fullDisplayName": "my_job_name #2",
    "id": "2",
    "keepLog": false,
    "number": 2,
    "queueId": 105,
    "result": "SUCCESS",
    "timestamp": 1580946027378,
    "url": "http://localhost:8080/job/my_job_name/2/",
    "changeSets": [],
    "culprits": [],
    "nextBuild": {
      "number": 3,
      "url": "http://localhost:8080/job/my_job_name/3/"
    },
    "previousBuild": {
      "number": 1,
      "url": "http://localhost:8080/job/my_job_name/1/"
    }
  },
  "lastUnstableBuild": null,
  "lastUnsuccessfulBuild": {
    "_class": "org.jenkinsci.plugins.workflow.job.WorkflowRun",
    "actions": [],
    "artifacts": [],
    "building": false,
    "description": null,
    "displayName": "#10",
    "duration": 1238044,
    "estimatedDuration": 1671,
    "executor": null,
    "fullDisplayName": "my_job_name #10",
    "id": "10",
    "keepLog": false,
    "number": 10,
    "queueId": 587,
    "result": "ABORTED",
    "timestamp": 1581534463735,
    "url": "http://localhost:8080/job/my_job_name/10/",
    "changeSets": [],
    "culprits": [],
    "nextBuild": null,
    "previousBuild": {
      "number": 9,
      "url": "http://localhost:8080/job/my_job_name/9/"
    }
  },
  "nextBuildNumber": 11,
  "property": [
    {
      "_class": "hudson.plugins.jira.JiraProjectProperty"
    },
    {
      "_class": "org.jenkinsci.plugins.workflow.job.properties.DisableConcurrentBuildsJobProperty"
    }
  ],
  "queueItem": null,
  "concurrentBuild": false,
  "resumeBlocked": false
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...