You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins流水线中实现React/Node.js项目版本自动递增

React/Node.js项目Jenkins流水线版本自动递增实现方案

Node.js生态下的项目(包括React)通过package.json管理版本,我们可以利用npm/yarn的版本命令实现自动递增,结合Jenkins流水线完成版本更新、变量传递的流程,类似Java项目中Maven的版本管理逻辑。

核心实现代码(Jenkinsfile)

stages {
    stage('递增版本号') {
        steps {
            script {
                echo '正在递增应用版本...'
                // 1. 自动递增补丁版本(可选major/minor/patch,按需替换)
                // --no-git-tag-version 避免自动生成Git标签,不需要可删除该参数
                sh 'npm version patch --no-git-tag-version'
                
                // 2. 读取package.json中的新版本号
                def packageJson = readJSON file: 'package.json'
                def newVersion = packageJson.version
                
                // 3. 设置环境变量,供后续构建步骤使用(比如镜像命名)
                env.APP_VERSION = newVersion
                env.IMAGE_NAME = "${newVersion}-${BUILD_NUMBER}"
                echo "版本已更新至: ${newVersion}"
                
                // 4. 可选:将版本变更提交回Git仓库(需确保Jenkins有仓库权限)
                sh 'git add package.json package-lock.json'
                sh "git commit -m 'chore: 升级版本至${newVersion}'"
                sh 'git push'
            }
        }
    }
}

关键步骤说明

  • 版本递增命令:

    • npm version patch:自动将补丁版本号+1(例:1.0.0 → 1.0.1)
    • 替换为npm version minor可递增次版本(例:1.0.0 → 1.1.0)
    • 替换为npm version major可递增主版本(例:1.0.0 → 2.0.0)
    • 若不需要自动生成Git标签,添加--no-git-tag-version参数;需要标签则移除该参数,命令会自动创建vX.X.X格式的标签。
  • 版本号读取:
    使用Jenkins内置的readJSON步骤直接解析package.json,比正则匹配更可靠,避免格式异常导致的解析失败。

  • Git提交(可选):
    如果需要在代码仓库中保留版本变更记录,执行Git提交和推送步骤,需确保Jenkins节点已配置仓库的读写权限(比如SSH密钥、账号密码)。

自定义版本规则(可选)

如果需要基于BUILD_NUMBER或其他逻辑生成版本号,可手动计算后指定版本:

script {
    echo '自定义版本递增...'
    // 示例:主版本1,次版本0,补丁版本使用BUILD_NUMBER
    def major = 1
    def minor = 0
    def patch = BUILD_NUMBER.toInteger()
    def customVersion = "${major}.${minor}.${patch}"
    
    sh "npm version --new-version ${customVersion} --no-git-tag-version"
    
    def packageJson = readJSON file: 'package.json'
    env.APP_VERSION = packageJson.version
    echo "版本已更新至: ${customVersion}"
}

Yarn环境适配

若项目使用Yarn,将npm version命令替换为Yarn对应的版本命令:

yarn version patch --no-git-tag-version
# 或自定义版本
yarn version --new-version ${customVersion} --no-git-tag-version

内容的提问来源于stack exchange,提问作者Emmanuel Oga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 20:57:28