【发布时间】:2018-08-04 08:40:45
【问题描述】:
package.json 中的脚本:
"scripts": {
"version": "echo $npm_package_version"
},
Jenkins 流水线中的一个阶段:
stage('Build'){
sh 'npm install'
def packageVersion = sh 'npm run version'
echo $packageVersion
sh 'VERSION=${packageVersion} npm run build'
}
我从 npm 脚本输出中获得了版本,但遵循以下行
echo $packageVersion
返回空值
是否未正确分配 packageVersion 值?
编辑: 当使用带有以下代码的管道实用程序步骤时
stage('Build'){
def packageJSON = readJSON file: 'package.json'
def packageJSONVersion = packageJSON.version
echo packageJSONVersion
sh 'VERSION=${packageJSONVersion}_${BUILD_NUMBER}_${BRANCH_NAME} npm run build'
}
我明白了
[Pipeline] echo
1.1.0
[Pipeline] sh
[...] Running shell script + VERSION=_16_SOME_BRANCH npm run build
所以我可以提取版本,但运行脚本时仍然无法通过它
【问题讨论】:
-
我没有使用node.js的经验,但如果
package.json包含版本,您也可以通过readJSON阅读。 -
感谢提示,我已经使用 readJSON 编辑了我的帖子
-
我将
--silent选项添加到npm run script以避免捕获添加的输出