reactjs - 使用 Jenkinsfile (Jenkins Pipeline) 从 Package.json 中提取版本和名称
问题描述
我的问题很简单,我想从 package.json 中提取版本和名称,但是当我提取版本和名称时,我得到了更多 URL,请参阅附件。为什么会这样?
詹金斯文件
pipeline {
agent any
environment {
CI = 'true'
//IMAGE = bat 'node -e "console.log(require(`./package.json`).name);"'
//VERSION = bat(script: 'npm run get-version')
//VERSION = bat '(npm run version --silent)'
//PACKAGE_VERSION = bat '(node -p -e "require(\'./package.json\').version")'
GIT_COMMIT_SHORT_HASH = GIT_COMMIT.take(7)
REPOSITORY = 'repo.dimiroma.com'
PORT = '8085'
LATEST = 'latest'
}
stages {
stage('Set Build Variables') {
steps {
script {
VERSION = bat(script: '''node -e "console.log(require('./package.json').version)"''', returnStdout: true).trim()
def getProjectName = { ->
return bat(
returnStdout: true,
script: 'node -e "console.log(require(\'./package.json\').name);"'
).trim()
}
//VERSION = getProjectVersion()
IMAGE = getProjectName()
}
}
}
stage('Information') {
steps {
script{
bat 'node -v'
bat 'git --version'
bat 'docker -v'
echo "JOB BASE NAME: ${JOB_BASE_NAME} BUILD-NUMBER: ${BUILD_NUMBER}"
echo "Version: ${VERSION}"
//echo "Version: ${PACKAGE_VERSION}"
echo "Name: ${IMAGE}"
echo "Branch_name: ${env.BRANCH_NAME}"
final scmVars = checkout(scm)
echo "scmVars: ${scmVars}"
echo "scmVars.GIT_COMMIT: ${scmVars.GIT_COMMIT}"
echo "scmVars.GIT_BRANCH: ${scmVars.GIT_BRANCH}"
}
}
}
stage('Install Dependencies') {
steps {
bat 'npm install'
}
}
stage('Test') {
steps {
bat 'npm test -- --coverage a'
}
}
stage('Create Docker Image'){
steps {
bat "docker images"
bat "docker build . -t ${IMAGE}:${VERSION}-${GIT_COMMIT_SHORT_HASH}"
}
}
}
}
Dockerfile
请帮忙。
解决方案
你可以这样做。我假设您为此安装了 npm 作为工具
stage("Build and push docker non-release"){
steps {
script {
def version = sh(returnStdout: true, script: "npm version")
echo "Version is ${version}"
def versionProps = readJSON text: version
echo "Project version is ${versionProps['project-name']}"
}
}
}
推荐阅读
- flask - Flask-Dance @oauth_authorized.connect_via() 方法在登录时永远不会执行
- linux - 在 Linux 中启动 VMX root 操作的正确顺序是什么
- java - 扩展ascii的base64编码
- python - 芹菜结果显示禁用
- heroku - H18 服务器请求中断
- python - 返回一个只有 20 个条目的列表。不超越
- java - 将 ArrayList 存储在 2d 数组 Java 中
- selenium - 我如何点击网站 http://Phptravels.Com/Demo/ 的 selenium webdriver 中的登录按钮
- node.js - 如何正确处理猫鼬CRUD上的错误
- ruby - Ruby 中哪些结构以关键字“end”结尾?