32 lines
1.3 KiB
TypeScript
32 lines
1.3 KiB
TypeScript
import "typings-global";
|
|
import * as plugins from "./npmci.plugins";
|
|
import {prepare} from "./npmci.prepare";
|
|
import {bash} from "./npmci.bash";
|
|
|
|
|
|
let triggerValueRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|?([a-zA-Z0-9\.\-\/]*)/;
|
|
|
|
export let trigger = function () {
|
|
let done = plugins.q.defer();
|
|
plugins.beautylog.info("now running triggers");
|
|
plugins.smartparam.forEachMinimatch(process.env, "NPMCI_TRIGGER_*", evaluateTrigger);
|
|
done.resolve();
|
|
return done.promise;
|
|
}
|
|
|
|
let evaluateTrigger = (triggerEnvVarArg) => {
|
|
let triggerRegexResultArray = triggerValueRegex.exec(triggerEnvVarArg);
|
|
let regexDomain = triggerRegexResultArray[1];
|
|
let regexProjectId = triggerRegexResultArray[2];
|
|
let regexProjectTriggerToken = triggerRegexResultArray[3];
|
|
let regexRefName = triggerRegexResultArray[4];
|
|
let regexTriggerName;
|
|
if (triggerRegexResultArray.length == 6) {
|
|
regexTriggerName = triggerRegexResultArray[5];
|
|
} else {
|
|
regexTriggerName = "Unnamed Trigger";
|
|
}
|
|
plugins.beautylog.info("Found Trigger!");
|
|
plugins.beautylog.log("triggering build for ref " + regexRefName + " of " + regexTriggerName);
|
|
plugins.request.post("https://gitlab.com/api/v3/projects/" + regexProjectId + "/trigger/builds", { form: { token: regexProjectTriggerToken, ref: regexRefName } });
|
|
} |