在大型企业里维护多分支流水线

本文首发于:Jenkins 中文社区安全

原文连接    做者:Aytunc BEKENmarkdown

在大型企业里维护多分支流水线

若是没有适当的解决方案,在大型企业可能难以建立和维护多分支流水线工具

jenkins-multi-branch-pipeline

Jenkins 是 DevOps 领域里很是好的 CI/CD 工具,它凭借其独特的功能,几乎能够知足你一切的的业务要求。其中一个独特的功能是多分支流水线(Multi-branch 流水线),能够动态配置流水线。可是,随着公司的发展,单独的多分支流水线并不能彻底知足你的全部需求,特别是在涉及大型企业时,你须要考虑流水线的集中管理,治理,稳定性,限制和安全性等其余事项。所以对于具备 Jenkins 流水线的大规模 CI/CD 环境,你须要添加以前没有想到的更多功能。oop

动态配置流水线

当一个开发人员建立一个新分支并将其推送到远程代码仓库时,Jenkins 会为这个新分支动态建立流水线。根据代码仓库,甚至也能够做为动态建立 Pull Request 流水线。这个动态功能在使用 Feature 分支或其余相似功能的团队中很是有用,因为本文的主题不是多分支流水线,你能够在端到端多分支流水线项目建立中找到详细信息和一些示例。ui

流水线即代码

在多分支流水线中,脚本存储在项目代码仓库中,这就是“流水线即代码”的概念。此外,当你拥有小型开发人员团队或项目没有大量分支时,它很是有用。这样,开发人员能够根据须要更改流水线,将更改推送到分支,并当即看到更改生效,但对于拥有数百或数千名拥有大量项目的开发人员的大型企业而言,这种方案就完成不可行了。spa

集中式库

当你的团队或项目增长时,是时候考虑一种方法,好比经过共享的的方式应该在全部项目中。从长远来看,这种“集中式库”变得很是关键,由于随着规模的扩大,流水线中出现了新的要求或变化,在这种状况下,手动更改每一个流水线或脚本对管理员来讲将是一场噩梦。所以,若是你在一个地方进行更改而且每一个流水线都获得更新,那么拥有该集中式库将更加实用。这是 Jenkins 共享库概念的用武之地。有关详细信息,你能够访问该站点插件

即便你只有一个流水线,仍然可使用集中式库。3d

治理与稳定

若是你的团队有对 CI/CD 必定了解的开发人员,而且你确信他们不会作出重大更改或编写脚本错误致使影响环境的稳定性,那么将流水线脚本放在代码中是很好的。可是,你真的肯定吗?code

有人极可能会意外删除流水线文件或者可能出现小错误,这些小错误都会影响 CI/CD 的稳定性。若是你在早期发现这些错误时很容易解决这些错误,若是没有,这些微小的变化或错误将可能比你想象的更严重的影响 CI/CD,它将被传播到不一样项目中的全部分支或 tag,这会变得很难解决。orm

你须要将正确的流水线脚本推送到全部分支和/或代码仓库,或是要求每一个开发人员提取最新的脚本,这种类型的问题集中式库这种更高级的方式来解决,除此以外,你的环境会由于有人可能会删除 Jenkins 文件或输入一些拼写错误带来风险。

远程文件插件

为了消除没必要要的更改的风险并下降使用的库的复杂性,咱们须要以某种方式将流水线脚本与项目/代码代码仓库分开,同时仍继续使用多分支流水线功能。为此,咱们有远程文件插件

这个插件使多分支流水线可以从其余代码仓库运行/加载流水线脚本,而不是将它们放在项目/代码代码仓库中,经过这个功能,你能够拥有一个单独的代码仓库,你能够在其中放置全部流水线脚本,而且只能为你本身提供访问权限。这样,你将拥有与集中式库相同的集中式流水线脚本代码仓库。此外,你能够将流水线脚本存储在集中式库自己中。

这个功能的好处是除了有访问权限的人以外,没有人可以在流水线脚本中进行更改。你在集中流水线脚本中所作的任何更改都将影响使用该脚本文件的全部多分支流水线。这样,你无需等待全部开发人员获取更新版本或将脚本推送到全部代码仓库上的全部分支。

另外一个好处是,若是你将集中式流水线脚本放入 BitBucket 或 GitHub 等代码仓库中,你还将拥有代码审查功能。这样,你能够与其余人共享代码仓库,同时仍可限制或查看其余人所作的更改。

结论

在大型企业中建立 CI/CD 流水线并不容易,你须要考虑治理,限制,稳定性和安全性等概念。在此上下文中,借助 Jenkins 的其余功能,Remote File Plugin 提供了一个独特的功能,用于集中,维护和共享流水线脚本。

有关插件的详细信息,你能够访问插件的 Wiki 页面。

相关文章
相关标签/搜索