-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathtriggerJenkins.js
33 lines (28 loc) · 1.38 KB
/
triggerJenkins.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const request = require('request');
const { Webhooks } = require('@qasymphony/pulse-sdk');
exports.handler = function ({ event: body, constants, triggers }, context, callback) {
function emitEvent(name, payload) {
let t = triggers.find(t => t.name === name);
return t && new Webhooks().invoke(t, payload);
}
var url = "http://" + constants.JenkinsUserName + ":" + constants.JenkinsAPIToken + "@" +
constants.JenkinsURL + '/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)';
request.get({ url: url, insecure: true }, function (err, response, body) {
if (!err) {
var crumb = body.split(":")[1];
var joburl = "http://" + constants.JenkinsUserName + ":" + constants.JenkinsAPIToken + "@" +
constants.JenkinsURL + "/job/" + constants.JenkinsJobName + "/build?token=" + constants.JenkinsJobToken
var opts = {
url: joburl,
insecure: true,
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
headers: {
"Jenkins-Crumb": crumb
}
}
request.post(opts, function (err, res, bd) {
emitEvent('$YOUR_SLACK_EVENT_NAME', { JenkinsCallSuccess: "Jenkins Build just kicked off for project " + constants.JenkinsJobName });
})
}
})
}