139 lines
3.6 KiB
JavaScript
139 lines
3.6 KiB
JavaScript
|
const { LogType } = require("loguix")
|
||
|
const fs = require("fs")
|
||
|
const path = require("path")
|
||
|
const { __glob } = require("./global-variables")
|
||
|
const clog = new LogType("Pïpeline")
|
||
|
const config = require("./config")
|
||
|
|
||
|
const tokenkey = config.getFile().JENKINS_TOKEN
|
||
|
|
||
|
module.exports.getAllPipelines = function() {
|
||
|
|
||
|
return new Promise((resolve, reject) => {
|
||
|
|
||
|
|
||
|
fetch(`https://jenkins.raphix.fr/api/json`, {
|
||
|
method: "GET",
|
||
|
headers: {
|
||
|
"Accept": "application/json",
|
||
|
"Authorization": `Basic ${tokenkey}`
|
||
|
},
|
||
|
credentials: "include"
|
||
|
})
|
||
|
.then(res => res.json())
|
||
|
.then(async list => {
|
||
|
|
||
|
const pipelinesJobs = new Array()
|
||
|
|
||
|
for(const job of list.jobs) {
|
||
|
await fetch(`${job.url}/api/json`, {
|
||
|
method: "GET",
|
||
|
headers: {
|
||
|
"Accept": "application/json",
|
||
|
"Authorization": `Basic ${tokenkey}`
|
||
|
},
|
||
|
credentials: "include"
|
||
|
})
|
||
|
.then(res => res.json())
|
||
|
.then(async res => {
|
||
|
|
||
|
if(res._class == "org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject") {
|
||
|
await getJobMain(res).then(resJ => {
|
||
|
res.jobs[0] = resJ
|
||
|
pipelinesJobs.push(res)
|
||
|
})
|
||
|
} else {
|
||
|
pipelinesJobs.push(res)
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
})
|
||
|
}
|
||
|
|
||
|
list.jobs = pipelinesJobs
|
||
|
|
||
|
resolve(list)
|
||
|
|
||
|
|
||
|
})
|
||
|
.catch(err => {
|
||
|
resolve("UNAVAILABLE")
|
||
|
})
|
||
|
})
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
module.exports.startPipeline = function(pipeline) {
|
||
|
|
||
|
|
||
|
// If it's a freestyle job, build with params
|
||
|
|
||
|
if(pipeline.type == "org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject") {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
fetch(`${pipeline.url}/job/${pipeline.jobname}/build?delay=0sec`, {
|
||
|
method: "POST",
|
||
|
headers: {
|
||
|
"Authorization": `Basic ${tokenkey}`
|
||
|
},
|
||
|
credentials: "include"
|
||
|
})
|
||
|
.then(res => {
|
||
|
resolve("OK")
|
||
|
})
|
||
|
})
|
||
|
} else {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
|
||
|
const parameters = pipeline.fields
|
||
|
|
||
|
const formatedParams = new URLSearchParams()
|
||
|
|
||
|
for(const param of parameters) {
|
||
|
formatedParams.append(param.name, param.value)
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
fetch(`${pipeline.url}/buildWithParameters?delay=0sec`, {
|
||
|
method: "POST",
|
||
|
headers: {
|
||
|
"Authorization": `Basic ${tokenkey}`,
|
||
|
"Content-Type": "application/x-www-form-urlencoded"
|
||
|
},
|
||
|
credentials: "include",
|
||
|
body: formatedParams
|
||
|
})
|
||
|
.then(res => {
|
||
|
resolve("OK")
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
function getJobMain(res) {
|
||
|
|
||
|
return new Promise(async (resolve, reject) => {
|
||
|
|
||
|
await fetch(`${res.jobs[0].url}/api/json`, {
|
||
|
method: "GET",
|
||
|
headers: {
|
||
|
'Accept': 'application/json',
|
||
|
'Authorization': `Basic ${tokenkey}`
|
||
|
},
|
||
|
credentials: 'include'
|
||
|
}).then(res => res.json())
|
||
|
.then(res => {
|
||
|
resolve(res)
|
||
|
})
|
||
|
|
||
|
|
||
|
})
|
||
|
|
||
|
}
|