如何在Jenkins脚本化管道中使用dockerhub-notification-plugin?

时间:2018-10-03 06:36:58

标签: docker jenkins jenkins-pipeline dockerhub

我想在将新映像推送到docker hub时触发管道。 我安装了dockerhub-notification-plugin。 如果我使用Web UI,则可以指定docker hub仓库:

enter image description here

我试图使用管道代码片段生成器,但是它不能正常工作:如果我指定了一个仓库,它将在生成的代码中被忽略。 例如:

enter image description here

生成代码:

properties([pipelineTriggers([[$class: 'DockerHubTrigger', options: []]])])

如您所见,在生成的代码中没有指定docker hub回购。

1 个答案:

答案 0 :(得分:3)

正确的方法是如下编写属性:

properties([
    pipelineTriggers([[$class: 'DockerHubTrigger', options: [[$class: 'TriggerOnSpecifiedImageNames', repoNames: ["YOUR_REPO_NAME"].toSet()]]]])
])

首先请注意选项值周围的附加括号。这是由于在詹金斯中如何评估groovy脚本。

但是为什么要设置?

根据javadoc TriggerOnSpecifiedImageNames类具有三个构造函数:不带参数,带字符串的可变参数和带集合。但是groovy将使用反射来实例化此类,这意味着将调用默认构造函数,并在以后应用各个属性。这使我们进入toSet(),因为正如您在javadoc中可以看到的那样,有一个用于仓库名称的属性的setter,如下所示:setRepoNames(Set<String> repoNames)