防止Jenkinsfile中的未经批准的部署(Multibranch Pipeline)

时间:2017-06-13 10:17:37

标签: git github jenkins groovy jenkins-pipeline

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

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

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

如何确保使用过的Jenkins文件是真实的而不是修改过的?我有什么解决方案吗?我希望这足够安全,以防止任何有权推送访问的人故意破坏东西,例如: G。 git pre-push hooks不是解决方案。

1 个答案:

答案 0 :(得分:2)

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

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