UNPKG

jenkins-cli-node

Version:
142 lines 6.06 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const Jenkins = require("jenkins"); const axios_1 = require("axios"); const cache_1 = require("../cache"); const utils_1 = require("../utils"); const plugin_1 = require("./plugin"); var ParameterType; (function (ParameterType) { ParameterType["git"] = "git"; ParameterType["checkbox"] = "checkbox"; ParameterType["radio"] = "radio"; })(ParameterType = exports.ParameterType || (exports.ParameterType = {})); class JenkinsCli { constructor(options) { this.jenkins = Jenkins(Object.assign(Object.assign({}, options.config), { promisify: true })); this.jobCache = new cache_1.JobCache(options.dir); // this.jenkins.on('log', console.log); this.cacheJobs = this.jobCache.getJob(); this.axios = axios_1.default.create({ baseURL: options.config.baseUrl, timeout: 5000000 }); this.axios.interceptors.response.use(response => { const { status, data, statusText } = response; if (status === 200) { return Promise.resolve(data); } else { return Promise.reject(new Error(statusText || 'Error')); } }, error => { return Promise.reject(error); }); this.setCrumb(); } // get the crumb setCrumb() { return __awaiter(this, void 0, void 0, function* () { const result = yield this.axios.get("/crumbIssuer/api/json"); this.crumb = { name: result.crumbRequestField, value: result.crumb }; }); } // get the crumb fetch(url, data) { return __awaiter(this, void 0, void 0, function* () { return this.axios.post(url, data, { headers: { [this.crumb.name]: this.crumb.value } }); }); } // get the job list getJobs() { return __awaiter(this, void 0, void 0, function* () { const info = yield this.jenkins.info(); return info.jobs.map(job => job.name); }); } // get all parameters for the job getParameters(selectJob) { return __awaiter(this, void 0, void 0, function* () { try { // get job configuration information const config = yield this.jenkins.job.get(selectJob); let parameters = []; const parameterDefinitions = config.actions[0].parameterDefinitions; parameterDefinitions.forEach(po => { switch (po._class) { case "net.uaznia.lukanus.hudson.plugins.gitparameter.GitParameterDefinition": parameters.push({ type: ParameterType.git, key: po.name, description: po.description, value: po.name }); break; case "hudson.model.ChoiceParameterDefinition": parameters = parameters.concat(plugin_1.getParametersByRadio(po)); break; case "com.cwctravel.hudson.plugins.extended__choice__parameter.ExtendedChoiceParameterDefinition": parameters = parameters.concat(plugin_1.getParametersByCheckbox(po)); break; default: break; } }); // If it is git, get the branch from the remote for (const p of parameters) { if (p.type === ParameterType.git) { const result = yield this.fetch(`/job/${selectJob}/descriptorByName/net.uaznia.lukanus.hudson.plugins.gitparameter.GitParameterDefinition/fillValueItems?param=${p.value}`, {}); p.value = result.values.map(k => k.value); } } return parameters; } catch (err) { utils_1.printError(err); return []; } }); } // todo: Unable to get the latest job queue when a single job takes a lot of time build(selectJob, parameters) { return __awaiter(this, void 0, void 0, function* () { yield this.jenkins.job.build({ name: selectJob, parameters }); this.jobCache.refreshJob({ name: selectJob, parameters }); return yield this.jenkins.job.get(selectJob); // const log = await this.jenkins.build.logStream(selectJob, info.lastBuild.number) // return new Promise((resolve, reject) => { // log.on('data', function(text) { // process.stdout.write(text) // }) // log.on('error', function(err) { // printError(err) // reject(err) // }) // log.on('end', function() { // resolve(true) // }) // }) }); } } exports.JenkinsCli = JenkinsCli; //# sourceMappingURL=index.js.map