Как узнать переменные / методы jenkins из плагинов

Это может быть открытый вопрос, но я хочу знать, как выяснить, как получить данные, предоставляемые внешним API jenkins, внутренне с Groovy.

Позвольте мне показать пример того, где у меня это работает, и как мне получить доступ к данным с другой конечной точки API.

Работа: если я получаю доступ к сборке на этой конечной точке https://jenkins_server/jon/myjob/buildnumb/api/json, в ответе json есть поле с именем "changeSets", к которому я смог получить доступ таким образом, и проанализировать данные мне было нужно. Мой код:

def changeLogSets = currentBuild.changeSets
for (int i = 0; i < changeLogSets.size(); i++) {
    def entries = changeLogSets[i].items
    for (int j = 0; j < entries.length; j++) {
        def entry = entries[j]
        echo "Commit hash: ${entry.commitId}"
        echo "Commit Author: ${entry.author}"
        echo "Commit Message: ${entry.msg}"
        echo "Commit time stamp: ${new Date(entry.timestamp)}"
    }
}

Данные ответа API:

"changeSets": [
    {
        "_class": "hudson.plugins.git.GitChangeSetList",
        "items": [
            {
                "_class": "hudson.plugins.git.GitChangeSet",
                "affectedPaths": [
                    "jenkins-post-reporting-example/external-shell-script-2.sh"
                ],
                "commitId": "3f8c165f7a83ce4d800ac933778f4591fb2feca2",
                "timestamp": 1547576190000,
                "author": {
                    "absoluteUrl": "URL",
                    "fullName": "user"
                },
                "authorEmail": "user",
                "comment": "msg to commit\n",
                "date": "2019-01-15 13:16:30 -0500",
                "id": "fsdfads",
                "msg": "msg to commit",
                "paths": [
                    {
                        "editType": "edit",
                        "file": "jenkins-post-reporting-example/external-shell-script-2.sh"
                    }
                ]
            }
        ],
        "kind": "git"
    }
]

Теперь я хочу получить доступ к конечной точке API здесь https://jenkins_server/jon/myjob/buildnumb/wfapi, которая имеет поле " stage ", потому что эта конечная точка содержит все данные, которые мне нужны для сбора каждой стадии в конвейере. Но этапы, кажется, в настоящее время не существуют, как мне определить, к каким методам / переменным я могу получить доступ из конечной точки https://jenkins_server/jon/myjob/buildnumb/wfapi, или, в более общем смысле, как определить, к чему вы можете получить доступ? остальное API внутренне как отличный скрипт?

Мой код: Но поле "Этапы" не найдено

def buildStagesData = currentBuild.stages

for (int i = 0; i < buildStagesData.size(); i++) {
    def stage = buildStagesData[i]
    echo "Stage name: ${stage.name}"
    echo "Stage duration: ${stage.durationMillis}"
}

Ответ API в конечной точке: https://jenkins_server/jon/myjob/buildnumb/wfapi

{
    "_links": {
        "self": {
            "href": "link"
        },
        "changesets": {
            "href": "link"
        }
    },
    "id": "200",
    "name": "#200",
    "status": "FAILED",
    "startTimeMillis": 1547576200603,
    "endTimeMillis": 1547576213339,
    "durationMillis": 12736,
    "queueDurationMillis": 3,
    "pauseDurationMillis": 0,
    "stages": [
        {
            "_links": {
                "self": {
                    "href": "link"
                }
            },
            "id": "6",
            "name": "Declarative: Checkout SCM",
            "execNode": "",
            "status": "SUCCESS",
            "startTimeMillis": 1547576201996,
            "durationMillis": 912,
            "pauseDurationMillis": 0
        },
        {
            "_links": {
                "self": {
                    "href": "link"
                }
            },
            "id": "27",
            "name": "Declarative: Tool Install",
            "execNode": "",
            "status": "SUCCESS",
            "startTimeMillis": 1547576203272,
            "durationMillis": 114,
            "pauseDurationMillis": 0
        }
    ]
}

1 ответ

Кажется , что нет предопределенного глобального var для прямого доступа к информации о этапах в Pipeline.

https://opensource.triology.de/jenkins/pipeline-syntax/globals

Другие вопросы по тегам