访问Jenkins管道作业中的BitBucket有效负载数据
我有一份詹金斯管道的工作;它被配置为构建在由BitBucket webhook调用的远程触发器上。这会起作用并触发构建 我还需要访问BitBucket()发送的有效负载数据,以获取有关推送的详细信息,例如特定分支 通常会解析这个有效负载并将其作为环境变量呈现给作业,但我无法将管道作业设置为连接到该插件的特定repo,因此它没有帮助 我试着测试数据是否可以通过以下几种不同的方式获得:访问Jenkins管道作业中的BitBucket有效负载数据,jenkins,bitbucket,jenkins-plugins,jenkins-pipeline,Jenkins,Bitbucket,Jenkins Plugins,Jenkins Pipeline,我有一份詹金斯管道的工作;它被配置为构建在由BitBucket webhook调用的远程触发器上。这会起作用并触发构建 我还需要访问BitBucket()发送的有效负载数据,以获取有关推送的详细信息,例如特定分支 通常会解析这个有效负载并将其作为环境变量呈现给作业,但我无法将管道作业设置为连接到该插件的特定repo,因此它没有帮助 我试着测试数据是否可以通过以下几种不同的方式获得: node { stage 'Desperation' echo "${params.push}"
node {
stage 'Desperation'
echo "${params.push}"
echo "${env.BITBUCKET_PAYLOAD}"
echo "${env.push}"
}
这些都不起作用(我也没料到它们会起作用)
有没有办法获取有效载荷数据?我唯一能想到的就是拥有一个自由式作业,并在该作业上设置到BitBucket的连接,然后在数据重新格式化后调用此作业。但这看起来非常笨拙。最终我不得不接受一种变通方法 我的最终设置是管道作业
我的构建
和自由式作业我的构建触发器
我的构建触发器
非常简单。它在SCM部分设置了一个git repo,并在Build triggers部分检查了对BitBucket的更改时生成Build
在生成后操作中,我选择了在其他项目上触发参数化生成
以上是重要的<代码>生成其他项目
不会触发管道作业。它只会说我的构建是不可构建的
在预定义参数下将有效负载参数传递到下游(管道)作业,输入为payload=${BITBUCKET\u payload}
BITBUCKET\u有效载荷
是由BITBUCKET有效载荷对象中的BITBUCKET插件填充的环境变量。您可以从BitBucket中查看有效负载文档
您的后期构建将如下所示:
在管道作业中,您应该创建一个名为有效负载
(字符串类型)的相应参数
在jenkins文件中
可以这样使用此有效负载:
node {
stage 'Echo stuff pointlessly'
def payload = new groovy.json.JsonSlurper().parseText("${params.payload}")
// Echoes the new commit hash
echo payload.push.changes[0].new.target.hash
}
请注意,作业中可能会出现序列化错误(java.io.NotSerializableException:groovy.json.internal.LazyMap
)。这是可以解释的。简而言之,您需要在使用后使有效负载
和其他JSONObject变量无效
任何意见或改进都将受到欢迎。以下是我们解决问题的方法:
- 我们使用BitBucket webhook来接收我们想要的通知
- 为了接收有效载荷,我们安装了
打印帖子内容
打印贡献的变量
generic webhook trigger
的文档涵盖了与您的情况完全相符的代码片段。我决定添加WebUI解释,以便您能够理解其要点