npmci/ts/npmci.trigger.ts

31 lines
1.3 KiB
TypeScript
Raw Permalink Normal View History

2016-11-24 22:21:40 +00:00
import * as plugins from './npmci.plugins'
import { prepare } from './npmci.prepare'
import { bash } from './npmci.bash'
2016-06-01 04:30:21 +00:00
2016-11-24 22:21:40 +00:00
let triggerValueRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|?([a-zA-Z0-9\.\-\/]*)/
2016-06-23 20:22:03 +00:00
export let trigger = function () {
2016-11-24 22:21:40 +00:00
let done = plugins.q.defer()
plugins.beautylog.info('now running triggers')
plugins.smartparam.forEachMinimatch(process.env, 'NPMCI_TRIGGER_*', evaluateTrigger)
done.resolve()
return done.promise
2016-06-23 20:22:03 +00:00
}
let evaluateTrigger = (triggerEnvVarArg) => {
2016-11-24 22:21:40 +00:00
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]
2016-06-23 20:22:03 +00:00
} else {
2016-11-24 22:21:40 +00:00
regexTriggerName = 'Unnamed Trigger'
2016-06-23 20:22:03 +00:00
}
2016-11-24 22:21:40 +00:00
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 } })
}