【问题标题】:Trigger from GIT to Jenkins buildWithParameters ignores parameter value in pipeline从 GIT 触发到 Jenkins buildWithParameters 忽略管道中的参数值
【发布时间】:2019-03-20 09:56:17
【问题描述】:

我在 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 的建议)

也不行。

来自 post-receive 钩子的 URL

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

输出

【问题讨论】:

    标签: git jenkins jenkins-pipeline githooks


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2022-11-14
      • 1970-01-01
      • 2018-05-19
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      • 2022-01-16
      • 1970-01-01
      • 2022-08-17
      相关资源
      最近更新 更多