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

时间:2019-03-20 09:56:18

标签: git jenkins jenkins-pipeline githooks

我在GIT中有一个接收后钩子(可以正常运行),可以调用

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

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

enter image description here

我的詹金斯管道脚本

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

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

enter image description here

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

谢谢


编辑#1(Matt Schuchard的建议)

也不行。

接收后挂钩中的网址

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

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

enter image description here

管道脚本

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
            }
        }
    }
}

输出

enter image description here


解决方案(由Virginie提供)

必须用&引用URL。

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

输出

enter image description here

1 个答案:

答案 0 :(得分:0)

请注意,如果使用的是Unix shell脚本,则需要转义&或引用整个URL。 你可以尝试一下吗?

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