从 GIT 到 Jenkins buildWithParameters 的触发器忽略管道中的参数值

Trigger from GIT to Jenkins buildWithParameters ignores parameter value in pipeline

我在 GIT 中有一个 post-receive 挂钩(工作正常),它调用

http://ip:port/job/project_name/buildWithParameters?token=abc&ABC=qwe

ABC 是我的参数,它在 Jenkins 的项目中定义为 String parameter,默认值为 xyz。 URL 的值为 qwe.

我的 Jenkins 管道脚本

pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                print env.ABC
            }
        }
    }
}

当从 GIT 触发构建时,env.ABC 打印 xyz 而不是 qwe。

如何从 URL 获取值 qwe? 我的目标是将版本化标签名称从 GIT 传递到管道。

谢谢


编辑 #1(来自 Matt Schuchard 的建议)

也不行。

URL 来自 post-接收挂钩

http://ip:port/job/project_name/buildWithParameters?token=abc&ABC=works&DEF=works

在 Jenkins UI 中为项目定义的参数

管道脚本

pipeline {
    agent any
    parameters {
        string(name: 'DEF', defaultValue: 'failed', description: '')
    }
    stages {
        stage('Checkout') {
            steps {
                print 'by params.ABC -> ' + params.ABC
                print 'by params.DEF -> ' + params.DEF
            }
        }
    }
}

输出


解决方案(来自 Virginie)

需要在URL中引用&。

http://ip:port/job/project_name/buildWithParameters?token=abc\&ABC=works\&DEF=works

输出

请注意,如果使用 Unix shell 脚本,& 将需要转义,或者引用整个 URL。 你能试试这个吗:

http://ip:port/job/project_name/buildWithParameters?token=abc\&ABC=works\&DEF=works