云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

中间件_云主机平台免费租用_超低折扣

小七 141 0

使用自定义标记文件确保管道中的公司标准

Pipeline as Code彻底改变了在Jenkins中定义连续交付管道的方式,它将管道作为"Jenkinsfile"签入到存储库中,而不是将定义本地存储在Jenkins中。这在利用Jenkins与Github和Bitbucket的直接集成时尤其有用。在本例中,Jenkins将扫描整个组织以查找包含Jenkins文件的存储库,然后在Jenkins中自动创建相关的管道。Jenkinsfile方法对于许多用例来说都是很好的,但是很多时候大型组织希望使用管道作为代码,同时仍然设置在整个组织中使用的某些标准。Pipeline as Code允许开发人员自由地创建自己的jenkins文件,而不考虑公司的标准或实践。对于小规模的实现来说,这可能是好的,但是随着项目和回购数量的增加,团队偏离共享服务团队开发的最佳实践的可能性更大。此外,在许多情况下,您可能只希望确保某些命令在常规管道之前或之后运行,例如要求在组织中的任何生成运行之后进行清理。CloudBees-Jenkins平台中的自定义标记文件特性就是为了解决这些问题而创建的。如前所述,自定义标记文件允许您将SCM中具有给定标识符的存储库与通用管道相关联。例如,与在每个Java项目中定义相同的Jenkinsfile不同,自定义标记文件将允许您定义一个管道,该管道应该由具有pom.xml文件'文件在里面(带pom.xml文件作为标识符,让您知道这是一个Java项目)。这是一种让新团队加入的简单方法,因为一旦他们在Github/Bitbucket中创建了一个新的Java项目,Jenkins将开始构建这个项目,而不需要创建新的Jenkinsfile。在许多情况下,如上所述对整个组织的Jenkinsfile进行完全模板化可能会有太多的限制,这就是为什么自定义标记文件还允许您设置标准,同时仍然允许团队灵活地创建自己的jenkins文件。让我们通过一个例子来说明这在Github组织中是如何工作的(Bitbucket团队也是如此)。确保有CloudBees管道:模板插件的更新版本。单击New Item->Github Organization并为其命名以创建新的Github组织在配置页面中,输入Github组织并扫描凭据在"项目识别器"部分删除选项"Pipeline Jenkinsfile"单击"添加"并选择"自定义脚本"输入如下所示的信息单击"保存"开始扫描组织注意,在本例中,标记文件被设置为Jenkinsfile。这意味着将检测到组织中具有Jenkinsfile的任何存储库或分支。然后,jenkins将为包含管道的所有项目定义管道标记。让我们分析一下这个管道脚本。第1-3行预先准备了一个"飞行前检查"阶段,该阶段允许自定义操作,例如在主Jenkinsfile管道之前设置构建环境。第5行使用'readTrusted'函数将Jenkinsfile文件读入变量。readTrusted允许您从正在签出的项目中读取文件,而无需位于节点上。第6行实际上通过使用'evaluate'函数运行Jenkinsfile管道。"evaluate"与"load"类似,但不要求也在"node"上运行。第8-10行附加了一个"飞行后清理"阶段,在这里可以在管道完成后运行清理命令。查看上面的Stage视图,可以看到主管道在运行时预先添加了"preflight checks"阶段,并附加了"post flight cleanup"阶段。这种在Jenkinsfile中读取自定义标记文件的方法对于需要在整个组织中运行其他操作非常有用。本博客中的示例非常简单,但这也可能是将来分析开发人员创建的Jenkinsfile并确保它满足某些标准的良好起点。这方面的一个例子是将jenkins文件读入一个变量(请看第5行),并解析该变量,以确保使用了某些函数或它符合某个模式。通过所有这些不同的选项,CloudBees-Jenkins平台中的自定义标记文件可以帮助您在标准化和为开发人员提供足够自由之间取得平衡。Isaac Cohen是CloudBees的解决方案架构师,帮助客户实现DevOps\Continuous Delivery目标,并使整个SDLC尽可能高效和透明。Isaac对Jenkins和它的各种工具集成有着广泛的知识,并且拥有领导大型企业DevOps团队的实践经验。