如何在 Jenkinsfile 中使用 package.json 的版本号自动重命名“dist”文件夹
Posted
技术标签:
【中文标题】如何在 Jenkinsfile 中使用 package.json 的版本号自动重命名“dist”文件夹【英文标题】:How to rename 'dist' folder with version number of package.json automatically in Jenkinsfile 【发布时间】:2022-01-12 06:15:00 【问题描述】:这是我的 package.json 文件
"name": "@company/sdk",
"version": "1.0.15",
"description": "Made with create-react-library",
"author": "me",
"license": "UNLICENSED",
"repository": "https://gitlab.com/company/sdk",
"main": "dist/index.js",
这是 Jenkinsfile 中的一个步骤
steps
withEnv(["TOKEN=$NPM_REGISTRY_TOKEN"])
sh 'echo "//registry.npmjs.org/:_authToken=$TOKEN" >> ~/.npmrc'
sh 'npm publish'
sh 'mv /var/lib/jenkins/workspace/sdk-js_master/dist /var/lib/jenkins/workspace/sdk-js_master/1.0.15'
package.json 中的每次版本号都会改变。如何自动重命名具有相同版本号 package.json 的“dist”文件夹。现在我手动将“dist”文件夹重命名为版本号,如上面的 Jenkinsfile 所示。例如,如果 package.json 版本号是 1.0.16,那么出于部署原因,我应该将 dist 文件夹自动重命名为 1.0.16。我尝试使用 sed 和 awk commad 但没有奏效。谁能帮忙解决这个复杂的问题。
【问题讨论】:
【参考方案1】:问题由脚本解决
#!/bin/bash
package_json_version=$(grep version package.json | cut -d '"' -f4)
echo $package_json_version
mv -v dist "$package_json_version"
mv /var/lib/jenkins/workspace/sdk-js_master/dist /var/www/assets/sdk-js_master/v$package_json_version
【讨论】:
以上是关于如何在 Jenkinsfile 中使用 package.json 的版本号自动重命名“dist”文件夹的主要内容,如果未能解决你的问题,请参考以下文章
Jenkinsfile:在 Jenkinsfile 中设置/更新一个全局变量并在构建中使用它
在 Jenkins Pipeline/Jenkinsfile 中获取 git 分支名称