У меня есть задача Gulp getBuildNumber, которая использует Дочерний процесс для выполнения скрипта.
gulp.task('getBuildNumber', function() {
var buildNumber = child_process.execSync("echo $BUILD_NUMBER").toString().trim();
console.info(buildNumber);
});
Когда я запускаю следующую команду для gulp
npm run gulp -- getBuildNumber
Я всегда получаю вывод как $BUILD_NUMBER, а не фактический номер сборки Jenkins.
Может кто-нибудь посоветовать, как это сделать?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете получить доступ к переменным среды с помощью process.env.
Например:
console.info(process.env.BUILD_NUMBER);
@Siddarth В этом случае переменные среды установлены неправильно. BUILD_NUMBER должен быть установлен Jenkins: wiki.jenkins.io/display/JENKINS/…
В jenkins я попробовал echo $BUILD_NUMBER, и я получил правильный вывод номера сборки, и я попытался распечатать process.env в задаче gulp, и он не выбирает переменные среды jenkins. Вот мой код gulp.task('version:up', function() { console.info(process.env); var buildNumber = process.env.BUILD_NUMBER; if (buildNumber === undefined) { buildNumber = new Date().getTime(); } console.info(buildNumber); });
Согласно https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback, вам нужно экранировать специальные символы:
exec('echo "The \\$HOME variable is $HOME"');
В вашем случае это означает, что вам нужно использовать
[...]child_process.execSync("echo \\$BUILD_NUMBER").toString().trim();[...]
^^
это не работает для меня. Он дает только все подробности npm и не дает подробностей о Дженкинсе. Итак, process.env.BUILD_NUMBER не определен