Как вытащить данные из API Jenkins в Google Sheet - PullRequest
0 голосов
/ 10 октября 2019

Я хочу получить данные с помощью API Jenkins с помощью Google Sheet Script и сохранить их в Google Sheet

1) Извлечь Jenkins Job Builds с помощью Jenkins API в Google Sheet - DONE
2) Сохранять данные в Google Sheet ???

(нужны только значения "builds.subBuilds.buildNumber" и "builds.subBuilds.duration"))
(необходимо исправить ошибку в скрипте)

    function getJenkinsBuilds() {

    // get the jenkins job

      var response = UrlFetchApp.fetch('http://jenkins.[domain].co/job/Build+Deploy/api/json', {
        'method': 'get',
        'muteHttpExceptions' : true,
        'headers' : {'Authorization' : 'Basic [tokan]'},
      });

      // parse the json reply and return builds

      var data = JSON.parse(response);
      var builds = data["builds"];
      Logger.log(builds);
      return builds;
      };

      // store predefined parameters from builds in the spreadsheet

   function setDataToTable() {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var sheet = ss.getSheetByName('Jenkins');
        var cell = sheet.getRange("A1");

        var rows = [['buildNumber','duration'],['','']];      // I GUESS THE MISTAKE IS HERE?

        sheet.getRange(cell.getRow(), cell.getColumn(), rows.length, rows[0].length).setValues(rows);
   }

Фактический результат:

Log shows retrieved array with Builds objects, i.e.:  

[19-10-10 16:18:16:937 AEDT] [{number=2081, subBuilds=[{jobName=...  

'Jenkins' spreadsheet is empty.

Ожидаемый результат:

Store "builds.subBuilds.buildNumber" and "builds.subBuilds.duration" values  
in the Google Sheet ('Jenkins' spreadsheet), i.e.:  

buildNumber duration
123         15sec
456         16sec
...         ...

1 Ответ

0 голосов
/ 11 октября 2019

Я смог заставить его работать следующим образом:

function getJenkinsBuilds() 
{

      // get jenkins builds
      var response = UrlFetchApp.fetch('http://jenkins.[domain].co/job/Build+Deploy/api/json', {
      'method': 'get',
      'muteHttpExceptions' : true,
      'headers' : {'Authorization' : 'Basic [token]'}
      });

      // parse the json reply
      var data = JSON.parse(response);
      var builds = data["builds"];
      var number = data['builds'][0]['number'];
      var url = data['builds'][0]['url'];
      Logger.log(number);
      Logger.log(url);

      // fill in the spreadsheet with data
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName('Jenkins');
      var cell = sheet.getRange('A1');
      var rows = [['BUILD']];

              for (var i = 0; i < builds.length; i++)
              {
              var number = data['builds'][i]['number'];
              var url = data['builds'][i]['url'];
              rows.push(['=HYPERLINK("'+url+'","'+number+'")']);
              Logger.log(number);
              Logger.log(url);
              sheet.getRange(cell.getRow(), cell.getColumn(), rows.length, rows[0].length).setValues(rows);
              }
};

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...