防止在 Jenkinsfile(多分支管道)中进行未经批准的部署

And*_*nai 5 git groovy github jenkins jenkins-pipeline

我们正在运行带有多分支管道插件的 Jenkins,该插件附加到 GitHub 组织的存储库,在其某些分支中使用 Jenkinsfile。Jenkins 可以访问多个其他代理和节点,并在成功构建后部署代码。

问题:我想阻止其他开发人员在他们的分支和拉取请求中使用修改后的 Jenkinsfile 运行构建

  • 解决方案 1: when Jenkinsfile 中的声明:安全性差。任何人都可以修改它,删除when子句并中断生产。
  • 解决方案 2: repo 上的锁定文件:在 GitHub 上不可用。我正在认真考虑迁移到 GitLab,因为他们有这个功能。
  • 解决方案 3:在 Jenkins 中单独作业进行部署:overkill。我认为应该有一个管道式的解决方案。

如何确保使用的 Jenkinsfile 是真实的且未被修改?有什么解决方案可以解决我缺少的问题吗?我希望这足够安全,以防止任何具有推送访问权限的人故意破坏事物,例如 git pre-push hooks 不是解决方案。

Ger*_*oth 3

您可以在多分支项目的配置中使用sectionCustom Script下的模式Build Configuration,这样不同分支中的jenkins文件将不会被使用,而是使用您在作业配置中定义的内容,通过在pipeline scriptsection中选择Definition并防止开发人员修改jenkins作业配置,或者您可以通过选择 来将任何文件指定为基本上任何存储库中的 jenkins 文件Pipeline script from SCM

例如,我们的存储库都没有一个,我们所有的项目都jenkinsfile只有一个,只有我更新并位于单独的存储库中。jenkinsfile