Jenkins 管道:多个 jenkins 实例

Jenkins Pipeline: multiple jenkins instances

我是管道插件的新手。在我的环境中,我们设置了多个团队和多个 jenkins 实例。我喜欢管道作业需要 'top-level' 的事实。 但是,我能找到的大多数示例都依赖于所有作业都配置在同一个 jenkins 实例上。 如果我的作业在不同的机器上怎么办?

一个简单的 webhook curl 会触发外部机器上的作业,但 return 不会对状态有任何反馈吗?

这是我的示例管道配置:

echo 'start Pipeline'

stage 'Build'
    build job: 'build'

stage 'Package tests'
    build job: 'test' # <-- this is on another jenkins server

stage 'Deploy'
    build job: 'deploy'

在 'test' 的作业配置中,您应该能够通过 "Restrict where this project can run" 为作业设置所需的标签。然后,作业应该在具有相应匹配标签的 Jenkins 从服务器上自动 运行。

如果您想手动控制作业应该 运行 在哪个节点上,那么您将不得不使用 NodeLabel Parameter Plugin. See also this related or this related Jenkins issue.

更新

如果您想在远程主机(即不是从机)上触发作业,您可以使用远程访问 API 或 Parameterized Remote Trigger Plugin.

我没有得到令人满意的尝试答案,但通过重新布线并将所有作业定义分阶段放入 Jenkinsfile(没有 build job ...)和 运行 中解决了这个问题整个构建在自己的容器中(与每个步骤的专用容器相比)。

我认为这是我想要完成的更好的练习。 我很高兴我的整个管道最终得到了简化。