| 
									
										
										
										
											2022-10-09 18:15:37 +02:00
										 |  |  | import * as plugins from './mod.plugins.js'; | 
					
						
							|  |  |  | import { bash } from '../npmci.bash.js'; | 
					
						
							|  |  |  | import { logger } from '../npmci.logging.js'; | 
					
						
							| 
									
										
										
										
											2016-06-01 06:30:21 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-07 04:20:14 +01:00
										 |  |  | const triggerValueRegex = | 
					
						
							|  |  |  |   /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|?([a-zA-Z0-9\.\-\/]*)/; | 
					
						
							| 
									
										
										
										
											2016-06-23 22:22:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-08 14:50:41 +01:00
										 |  |  | export let trigger = async () => { | 
					
						
							| 
									
										
										
										
											2018-11-24 15:00:19 +01:00
										 |  |  |   logger.log('info', 'now running triggers'); | 
					
						
							| 
									
										
										
										
											2023-07-12 15:35:38 +02:00
										 |  |  |   await plugins.smartobject.forEachMinimatch(process.env, 'NPMCI_TRIGGER_*', evaluateTrigger); | 
					
						
							| 
									
										
										
										
											2018-04-04 22:25:13 +02:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2016-06-23 22:22:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-14 18:11:12 +00:00
										 |  |  | const evaluateTrigger = async (triggerEnvVarArg) => { | 
					
						
							| 
									
										
										
										
											2018-11-24 15:00:19 +01:00
										 |  |  |   const triggerRegexResultArray = triggerValueRegex.exec(triggerEnvVarArg); | 
					
						
							|  |  |  |   const regexDomain = triggerRegexResultArray[1]; | 
					
						
							|  |  |  |   const regexProjectId = triggerRegexResultArray[2]; | 
					
						
							|  |  |  |   const regexProjectTriggerToken = triggerRegexResultArray[3]; | 
					
						
							|  |  |  |   const regexRefName = triggerRegexResultArray[4]; | 
					
						
							| 
									
										
										
										
											2018-04-04 22:25:13 +02:00
										 |  |  |   let regexTriggerName; | 
					
						
							| 
									
										
										
										
											2017-03-08 14:50:41 +01:00
										 |  |  |   if (triggerRegexResultArray.length === 6) { | 
					
						
							| 
									
										
										
										
											2018-04-04 22:25:13 +02:00
										 |  |  |     regexTriggerName = triggerRegexResultArray[5]; | 
					
						
							| 
									
										
										
										
											2017-03-08 14:50:41 +01:00
										 |  |  |   } else { | 
					
						
							| 
									
										
										
										
											2018-04-04 22:25:13 +02:00
										 |  |  |     regexTriggerName = 'Unnamed Trigger'; | 
					
						
							| 
									
										
										
										
											2017-03-08 14:50:41 +01:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-11-24 15:00:19 +01:00
										 |  |  |   logger.log('info', 'Found Trigger!'); | 
					
						
							|  |  |  |   logger.log('info', 'triggering build for ref ' + regexRefName + ' of ' + regexTriggerName); | 
					
						
							|  |  |  |   plugins.smartrequest.postFormData( | 
					
						
							| 
									
										
										
										
											2018-09-22 14:36:25 +02:00
										 |  |  |     'https://gitlab.com/api/v3/projects/' + regexProjectId + '/trigger/builds', | 
					
						
							|  |  |  |     {}, | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         name: 'token', | 
					
						
							|  |  |  |         payload: regexProjectTriggerToken, | 
					
						
							| 
									
										
										
										
											2021-05-14 18:11:12 +00:00
										 |  |  |         type: 'string', | 
					
						
							| 
									
										
										
										
											2018-09-22 14:36:25 +02:00
										 |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         name: 'ref', | 
					
						
							|  |  |  |         payload: regexRefName, | 
					
						
							| 
									
										
										
										
											2021-05-14 18:11:12 +00:00
										 |  |  |         type: 'string', | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2018-09-22 14:36:25 +02:00
										 |  |  |     ] | 
					
						
							|  |  |  |   ); | 
					
						
							| 
									
										
										
										
											2018-04-04 22:25:13 +02:00
										 |  |  | }; |