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

Jenkins使用ansicolor着色sh命令报错,returnStdout触发相同错误

问题分析与解决方案

让我们一步步拆解你遇到的问题,核心原因主要集中在Groovy字符串转义规则和Jenkins sh步骤的语法规范上,下面分场景说明:

一、AnsiColor插件使用时的报错原因

你当前的写法里有两个关键问题:

  1. Groovy的字符串转义坑:在Groovy的双引号/多行字符串("""包裹)中,\会被当作转义字符处理,所以你写的\033并不会被解析为ANSI颜色的起始符(ASCII 27),反而会被Groovy转义成无效字符,导致shell执行时出错。
  2. 对AnsiColor插件的误解:其实你完全不需要手动在sh脚本里加ANSI转义序列——这个插件的作用是让Jenkins识别并渲染shell命令本身输出的颜色。比如只要git开启了颜色输出,插件就会自动把带颜色的输出显示在Jenkins控制台里。

修正后的AnsiColor正确用法

如果想让git branch输出带颜色,先临时开启git的颜色配置,再用插件包裹即可:

node { 
  stage ('Pulling code from Bitbucket') { 
    git branch: 'master', credentialsId: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', url: 'git@bitbucket.org:xxxxx/test.git' 
    wrap([$class: 'AnsiColorBuildWrapper', colorMapName: 'xterm']) { 
      // 临时开启git全局颜色输出
      sh 'git config --global color.ui always'
      // 直接执行git branch,插件会自动处理颜色输出
      sh 'git branch'
    } 
  } 
}

如果一定要手动添加自定义ANSI颜色,要么用Groovy单引号字符串(不会转义\),要么用Unicode转义符\u001b代替\033(Groovy会正确解析):

// 方式1:单引号字符串,避免Groovy转义
sh '\033[35mgit branch\033[0m'
// 方式2:Unicode转义的双引号字符串
sh "\u001b[35mgit branch\u001b[0m"

二、returnStdout用法的报错原因

你注释里的代码有明显的语法错误:

  • 引号未闭合:script: 'git branch "" 这里的单引号没收尾
  • sh步骤的参数写法错误:当使用命名参数(比如returnStdout: true)时,不能把参数包裹在字符串里,要直接传递参数Map。

正确的returnStdout写法应该是这样:

node { 
  stage ('Pulling code from Bitbucket') { 
    git branch: 'master', credentialsId: '2bbc73c4-254e-45bd-85f4-6a169699310c', url: 'git@bitbucket.org:xxxxx/test.git' 
    script { 
      def branchOutput = sh(returnStdout: true, script: 'git branch').trim()
      println "${branchOutput}" 
    }
  }
}

如果修正语法后还是出现和AnsiColor相同的错误,那大概率是之前的脚本里残留了转义字符处理问题,或者节点shell环境有冲突。

三、通用排查小技巧

如果以上修正后仍报错,可以试试这些方法:

  • 直接在Jenkins节点的终端执行echo -e "\033[35mTest Color\033[0m",验证节点shell是否支持ANSI转义
  • 检查AnsiColor插件是否正确安装,版本是否和你的Jenkins版本兼容
  • 用sh 'echo -e "\033[35mTest Color\033[0m"'做最小化测试,排查是否是git命令本身的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 22:52:51