如何在 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:在 Jenkinsfile 中设置/更新一个全局变量并在构建中使用它

在 Jenkins Pipeline/Jenkinsfile 中获取 git 分支名称

如何等待Jenkinsfile“并行”块内的所有执行程序?

错误:在声明性 Jenkinsfile 中使用 Bash 脚本

如何从Jenkinsfile触发组织扫描?