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

Jenkins基于package.json设置构建名报MacroEvaluationException错误

报错根因
  • 你当前安装的Build Name and Description Setter 2.2.0、Token Macro 293.v283932a_0a_b_49两款插件,本身没有内置JSON文件取值的令牌实现,你配置里用的${JSON,...}宏没有对应的解析逻辑,是触发本次MacroEvaluationException的核心原因。
  • 配置本身存在两个潜在触发点:一是相对路径写了./前缀,宏解析时不会自动识别相对路径语义,会直接拼接字符串查找文件,部分环境下会识别为工作空间下名为"./package.json"的文件,导致找不到目标文件;二是部分老版本宏实现对参数引号的兼容性差,容易出现参数识别失败。
  • 若后续补装插件后仍报错,需要排查package.json是否存在JSON语法错误(比如尾部多余逗号、注释内容),或者文件不在Jenkins任务工作空间的对应路径下。
修复步骤
  1. 补装功能依赖插件
    进入Jenkins插件管理页面,搜索安装 JSON Token Macro 插件,安装完成后重启Jenkins让插件生效,该插件是Token Macro体系下专门提供JSON文件字段读取能力的扩展,缺失该插件时所有${JSON}宏都会直接抛出解析异常。

  2. 修正构建名配置规则
    将原配置的构建名规则替换为以下写法,去掉多余的./路径前缀,确认路径与工作空间内package.json的实际位置匹配:

SQ_${JSON,file="package.json",path="version"}

如果你的package.json存放在代码拉取后的子目录(例如前端项目代码在仓库的web子文件夹下),将file参数改为对应相对工作空间的路径即可,例如file="web/package.json"。

  1. 兜底方案(宏解析持续异常时使用)
    如果插件安装、配置修正后仍存在宏解析问题,可以直接在流水线脚本中读取版本号设置构建名,完全绕开令牌宏的解析逻辑,稳定性更高。需要确保环境已安装Pipeline Utility Steps插件(绝大多数流水线环境默认预装),示例脚本如下:
pipeline {
    agent any
    stages {
        stage('拉取代码并设置构建名') {
            steps {
                // 替换为你的代码拉取逻辑
                git branch: 'main', url: '你的代码仓库地址'
                script {
                    // 路径与实际package.json位置匹配
                    def pkg = readJSON file: 'package.json'
                    currentBuild.displayName = "SQ_${pkg.version}"
                }
            }
        }
        // 其余构建步骤
    }
}

内容的提问来源于stack exchange,提问作者Alvaro Maravi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 00:12:16