我想在将新镜像推送到 docker hub 时触发管道。 我安装了dockerhub-notification-plugin 。 如果我使用 Web UI,则可以指定 docker hub 存储库:
我尝试使用管道片段生成器,但它无法正常工作:如果我指定一个存储库,它会在生成的代码中被忽略。 例如:
生成代码:
properties([pipelineTriggers([[$class: 'DockerHubTrigger', options: []]])])
如您所见,生成的代码中没有指定 docker hub 存储库。
最佳答案
正确的方法是编写如下属性:
properties([
pipelineTriggers([[$class: 'DockerHubTrigger', options: [[$class: 'TriggerOnSpecifiedImageNames', repoNames: ["YOUR_REPO_NAME"].toSet()]]]])
])
首先注意选项值周围的附加括号。这是由于 jenkins 中 groovy 脚本的评估方式造成的。
但是为什么要设置呢?
根据javadoc TriggerOnSpecifiedImageNames
类具有三个构造函数:不带参数、带字符串可变参数和带集合。但是groovy将使用反射来实例化此类,这意味着将调用默认构造函数,然后应用相应的属性。这将我们带到toSet()
因为正如您在 javadoc 中看到的,有一个存储库名称属性的 setter ,如下所示: setRepoNames(Set<String> repoNames)
.
关于docker - 如何在 Jenkins 脚本化管道中使用 dockerhub-notification-plugin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52621040/