1. 程式人生 > >用node.js寫一個jenkins發版指令碼

用node.js寫一個jenkins發版指令碼

背景

每次到網頁裡手動發版有點煩,寫個指令碼來提高開發效率。

CFG

在 jenkins 設定裡獲取 API TOKEN
把 host 和賬號密碼拼接起來就可以通過鑑權。

const token = {
  user: '',
  password: '',
}

const host = 'jenkins.xxx.cn';
const basicUrl = `http://${token.user}:${token.password}@${host}`;

BUILD

呼叫 jenkins 提供的 jenkins.job.build() 方法發版。

// crumbIssuer 預設false, true 啟用CSRF保護支援
const jenkins = require('jenkins')({ baseUrl, crumbIssuer: true });

const job_name = '';  // 想要發版的job的名字

jenkins.job.build(
  {
    name: job_name,
    parameters: {
      name: 'value',  // 填寫一些引數資訊
    } 
  },
  function(err, data) {
    if (err) throw err;

    console.log('queue item number', data);
});

檢視發版狀態

執行 build 之後我們想要檢視當前 build 的狀態,只成功、失敗還是進行中。

jenkins.job.get() 獲取當前 job 的資訊。data.lastBuild.number 可以拿到最後一個 build 的 number,最後一個 build 也就是我們剛剛觸發的 build。
jenkins.build.get() 獲取當前 build 的資訊。data.result 獲取當前 build 的結果

jenkins.job.get(job_name, (err, data) => {
  if (err) throw err;

  const lastBuildNumber = data.lastBuild.number;
  console.log('last build number', lastBuildNumber);

  jenkins.build.get(job_name, lastBuildNumber, (err, data) => {
    if (err) throw err;
    console.log('last build result', data.result);
  })
});

資料

jenkins