31 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 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 } })
 | |
| }
 |