Я хочу запустить артиллерийскую команду из файла gulp на основе аргумента, переданного из команды gulp.
Команда для запуска:
gulp runner --serviceName employeeServices --scenario create-employee-details --env staging
Это должно выполнить команду, указанную ниже, которая формируется вgulp task (gulpfile.js)
artillery run -o report.json ./services/employeeServices/scenarios/create-employee-details.yml --config ./services/employeeServices/config.yml --overrides "$(cat ./services/employeeServices/overrides.slos.json)" -e staging
Я получаю ошибку ниже. Хотя JSON действителен для overrides.slos.json
The values of --overrides does not seem to be valid JSON
Код для gulpfile.js:
const gulp = require('gulp');
const yargs = require('yargs');
const path = require('path');
const cp= require('child_process');
gulp.task('runner', async (done) => {
let execute;
if (argv.serviceName === undefined) {
console.log('<------FAILED: Mandatory to specify Service name for performance testing------>');
} else {
let scenarioPath = './services/' + argv.serviceName + '/scenarios/' + argv.scenario + '.yml';
let configPath = ' --config ./services/' + argv.serviceName + '/config.yml';
let overridesPath = ' --overrides "$(cat ./services/' + argv.serviceName + '/overrides.slos.json)"';
let env = ' -e ' + argv.env;
execute = 'artillery run -o report.json ' + scenarioPath + configPath + overridesPath + env;
}
cp.execSync(execute,{shell:true}, (error, stdout, stderr) => {
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
if (error !== null) {
console.log(`exec error: ${error}`);
}
})
await done();
})
Желаемый результат: команда должна запускаться, как указано выше