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

标签 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 存储库。

最佳答案

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

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/

相关文章:

android - jenkins android 找不到 sdkmanager.jar

jenkins - 多分支管道 Jenkins 作业与[ci跳过]

docker docker : waiting for an IP

docker - 如何修复 Docker 中的 'No space left on device' 错误?

docker - bitnami Spark docker 在 minideb 上安装软件包

docker - 运行单元测试 karma 脚本后 Jenkins 管道不会停止

java - Jenkins 构建中嵌入式 Mongo DB 测试的 UnknownHostException

docker - 在 Jenkins 中加速 NPM 构建

Jenkins - 如果作业由上游作业启动,则更改属性

docker - Jenkins 管道中的 npm 安装失败