ОПИСАНИЕ:
Текущий код работает нормально для получения информации о сборках.
Однако я застрял с получением одного уровня глубже - subBuilds - и применением их состояния pass / fail в качестве цвета шрифта.
Сценарий приведен ниже:
1) Получить задание Jenkins и сохранить каждое «число» сборки (json response1)
GET http://jenkins.site.com/job/[job_name]/api/json
{
"builds": [{
"number": "i"
}]
}
2) Получить каждое построение задания Jenkins и сохранить «параметры» (json)response2)
GET http://jenkins.site.com/job/[job_name]/' + number + '/api/json
{
"actions": [{
"parameters": [{
"name": "service1",
"value": "true"
}, {
"name": "service2",
"value": "true"
}, {
"name": "service3",
"value": "false"
}]
}],
"builds": [{
"number": "i",
"subBuilds": [{
"jobName": "service1",
"state": "success"
}, {
"jobName": "service2",
"state": "failure"
}]
}]
}
3) Разобрать response2 -> "subBuilds" -> "state" и пометить сбойные службы красным ???
(обратите внимание, что все сервисы, следующие после сбоя, тоже не работают, поэтому они отсутствуют в response2 -> builds -> subBuilds)
Сценарий GOOGLE SHEET:
function getJenkinsBuilds() {
// get Jenkins Job
var response1 = UrlFetchApp.fetch('http://jenkins.site.com/job/[job_name]/api/json', {
'method': 'get',
'muteHttpExceptions': true,
'headers': {
'Authorization': 'Basic [token]'
}
});
// parse response from Jenkins
var data1 = JSON.parse(response1);
var builds = data1['builds'];
// create variables for Google Spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('PULL');
var a1 = sheet.getRange('A1');
var b2 = sheet.getRange('B2');
var rows = [
[
'ENV',
'BUILD',
'BRANCH',
'service 1',
'service 2',
'service 3'
]
];
// go through builds and get each build details - environment, branch, and 3 services deployed
for (var i = builds.length - 1; i >= 0; i--) {
var number = data1['builds'][i]['number'];
var response2 = UrlFetchApp.fetch('http://jenkins.site.com/job/[job_name]/' + number + '/api/json', {
'method': 'get',
'muteHttpExceptions': true,
'headers': {
'Authorization': 'Basic [token]'
}
});
var data2 = JSON.parse(response2);
var env = data2['actions'][0]['parameters'][0]['value'];
var branch = data2['actions'][0]['parameters'][1]['value'];
var service1 = data2['actions'][0]['parameters'][2]['value'];
var service2 = data2['actions'][0]['parameters'][3]['value'];
var service3 = data2['actions'][0]['parameters'][4]['value'];
//save data to table
if (number > b2.getValue()) {
sheet.insertRowBefore(b2.getRow());
rows.push([
env,
'=HYPERLINK("http://jenkins.site.com/job/[job_name]/' + number + '","' + number + '")',
branch,
service1,
service2,
service3
]);
sheet.getRange(a1.getRow(), a1.getColumn(), rows.length, rows[0].length).setValues(rows);
};
}
};
АКТУАЛЬНЫЙ ЛИСТ GOOGLE:
ENV, BUILD, BRANCH, service1, service2, service3
envC, 37, branchX, false, true, true
envB, 36, branchY, false, false, true
envA, 35, branchX, true, true, false
ОЖИДАЕМЫЙ ЛИСТ GOOGLE:
failed services should be marked with red,
where failed services are:
1) response2 -> builds -> subBuilds -> state=failure
or
2) which are not listed under subBuilds in response2.