存储库中没有 Jenkins 文件的 Jenkins 声明式管道

Jenkins Declarative Pipeline without Jenkins file in the repository

我正在尝试升级我当前的回归基础架构以使用 pipeline plugin,我意识到有两种方法:scripted pipelinedeclarative pipeline。通过多篇文章,我意识到 declarative pipeline 更适合未来,也更强大,因此我倾向于使用它。但是我不想在我的设置中有以下限制:

  1. jenkinsfile 需要在存储库中。我不想将我的 jenkinsfile 保留在代码存储库中。

  2. 因为 jenkinsfile 需要在 SCM 中。这是否意味着我无法测试文件中的任何修改,直到我将其签入存储库。

上面的任何详细信息都会非常有帮助。

声明式管道被编译为脚本式管道,因此它们肯定不会消失。但是声明式的更容易处理,所以对你来说没问题。

您不必将 Jenkinsfile 签入 VCS。您还可以设置 Pipeline 类型的作业并在那里定义它。但这有一些常见的缺点,比如没有历史等等。

当使用 multi-branch 管道时,即每个分支包含一个 Jenkinsfile 生成自己的作业,您只需将更改的管道推送到一个新分支并执行它。完成后,将其合并。

这种方法肯定会稍微增加反馈周期,但它只是应用了与编写软件时相同的原则。对于实验,只需设置一个 Pipeline 类型的作业并进行试验。然后,提交到一个分支,测试它,审查它,合并它。

您可以为此使用 Pipeline Multibranch Defaults Plugin。它允许您在网络中定义 Jenkinsfile UI(使用 Config File Provider 插件)本身,然后从多分支管道引用该文件。