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

zhte4eai  于 2022-11-01  发布在  Jenkins
关注(0)|答案(2)|浏览(226)

我们正在运行Jenkins,其中多分支管道插件连接到GitHub组织的仓库,Jenkins的一些分支中包含Jenkinsfile。Jenkins可以访问多个其他代理和节点,在成功构建代码后,Jenkins可以在这些代理和节点上部署代码。
问题在于:我想防止其他开发人员在其分支中运行带有修改过的Jenkinsfile的构建版本,并提出请求

    • 解决方案1:* Jenkinsfile中的when语句:安全性差。任何人都可以修改它,删除when子句并中断生产。
    • 解决方案2:* 存储库上的锁定文件:GitHub上没有这个功能。我正在认真考虑转移到GitLab,因为他们有这个功能。
    • 解决方案3:* 将Jenkins中的作业分开进行部署:我认为应该有一个类似管道的解决方案。

我怎样才能确保所使用的Jenkinsfile是真实的,没有被修改过?有什么解决方案是我所缺少的吗?我希望它足够安全,以防止任何具有push访问权限的人故意破坏东西,例如,git pre-push钩子不是一个解决方案。

uz75evzq

uz75evzq1#

您可以在多分支项目的配置中使用Build Configuration节下的Custom Script模式,这样,将不会使用不同分支中的jenkins文件,而是使用您在作业配置中定义的jenkins文件,方法是在Definition节中选择pipeline script,并防止开发人员修改jenkins作业配置,或者您可以通过选择Pipeline script from SCM将任何存储库中的任何文件指定为jenkins文件。
例如,我们没有一个仓库有jenkinsfile,我们所有的项目只有一个jenkinsfile,只有我更新它,并且它位于一个单独的仓库中。

zmeyuzjn

zmeyuzjn2#

我现在面临着同样的问题,这个Jenkins插件可能可以帮助我们:Remote Jenkinsfile Provider Plugin
我从他们的文件中得到了下面的句子:
使用此插件,您可以定义/设置另一个存储库中的Jenkins文件,同时仍然可以使用MultiBranch Pipeline项目功能。这样,您就可以将所有Jenkins文件集中到另一个存储库中,在该存储库中您可以查看或限制更改,并将MultiBranch Pipeline用于多分支存储库。
因此,您可以使用其他存储库来存储Jenkinsfile,并只给予适当的人访问以更改它。
我可能会在接下来的几周里给予。

相关问题