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

How to use dockerhub-notification-plugin in Jenkins scripted pipeline?

我想在将新图像推送到 docker 集线器时触发管道。 我安装了 dockerhub-notification-plugin。 如果我使用网络 UI,则可以指定 docker 集线器存储库:

我尝试使用管道片段生成器,但它无法正常工作:如果我指定了一个存储库,它会在生成的代码中被忽略。 例如:

生成代码:

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

如您所见,生成的代码中没有指定 docker 集线器存储库。

正确的做法是像下面这样写你的属性:

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

首先请注意选项值周围的附加括号。这是由于 groovy 脚本在 jenkins 中的评估方式。

但为什么要设置?

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