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
|
|
|
};
|