Как узнать переменные / методы 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