我想在将新映像推送到docker hub时触发管道。 我安装了dockerhub-notification-plugin。 如果我使用Web UI,则可以指定docker hub仓库:
我试图使用管道代码片段生成器,但是它不能正常工作:如果我指定了一个仓库,它将在生成的代码中被忽略。 例如:
生成代码:
properties([pipelineTriggers([[$class: 'DockerHubTrigger', options: []]])])
如您所见,在生成的代码中没有指定docker hub回购。
答案 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)
。