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

如何在Jenkins的Groovy后置构建脚本中传递参数?

解决Jenkins Groovy后置脚本无法获取VERSION_CURR参数的问题

错误原因

  • 原代码中使用了不存在的manager对象,在Groovy后置构建脚本环境中,直接通过build对象即可访问构建变量。
  • 单引号字符串在Groovy中不会执行变量插值,因此'${VERSION_CURR}'无法被替换为实际参数值。
  • 直接引用VERSION_CURR变量会失败,因为脚本环境未直接暴露该参数,需通过build.buildVariables方法获取。

修复后的脚本

import java.io.BufferedReader
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.net.URL
import java.net.URLConnection

def sendPostRequest(urlString, paramString) {
    def url = new URL(urlString)
    def conn = url.openConnection()
    conn.setDoOutput(true)
    def writer = new OutputStreamWriter(conn.getOutputStream())

    writer.write(paramString)
    writer.flush()
    String line
    def reader = new BufferedReader(new InputStreamReader(conn.getInputStream()))
    while ((line = reader.readLine()) != null) {
        println line
    }
    writer.close()
    reader.close()
}

// 正确获取构建参数VERSION_CURR
def versionCurr = build.buildVariables.get("VERSION_CURR")
// 使用双引号字符串进行插值,同时保留Telegram的Markdown格式
def result = "Project: *Autotests* \n Version *${versionCurr}* \n"

sendPostRequest("https://api.telegram.org/bot{token}/sendMessage", "parse_mode=Markdown&chat_id={id_Chat}&reply_to_message_id=&text=${result}")

额外说明

  • 如果你的Groovy脚本运行在Pipeline环境中,获取参数的方式应为env.VERSION_CURR,替换后的代码片段如下:
    def versionCurr = env.VERSION_CURR
    
  • 确保Telegram的Markdown格式符合要求,避免出现未转义的特殊字符导致消息发送失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:45:37