如何使用GitLab CI / CD运行多个管道


为多个项目配置GitLab CI / CD时,启动并可视化管道。


持续集成(CI)是在代码与主分支合并之前自动进行汇编和测试的实践。 它使开发人员可以相当频繁地及早地注入代码,同时降低将新错误引入主源代码存储库的风险。


尽管CI会检查新代码与同一存储库中的其他代码集成时是否不会破坏新代码,但通过此存储库上的所有测试只是第一步。 在代码中运行CI之后,在真实环境中部署和运行测试非常重要。 从CI到持续交付和部署(CD)的过渡是“成人” DevOps的下一步。 部署和随后的重新测试使您可以测试一个项目的代码以及可能由其他项目管理的其他组件和服务。


为什么需要确保我的代码可以与其他组件一起使用?


一个很好的例子是微服务的体系结构。 通常,微服务是在不同的项目中管理的,每个微服务都有自己的存储库和管道。 此外,每个开发团队通常都负责单个微服务和管道配置。 作为程序员,您可能要确保对代码所做的更改不会违反其微服务的功能。 因此,除了项目测试外,您还可以对它们运行测试。


管道交叉项目


启动项目管道时,您还需要运行跨项目管道,该管道最终将部署并测试所有相关微服务的最新版本。 为此,您需要一种简单,灵活和方便的方法来在项目的CI框架内启动其他管道。 通过在CI配置文件中添加特殊任务,GitLab CI / CD提供了一种启动跨项目管道的简便方法。


GitLab CI / CD配置文件


在GitLab CI / CD中,在每个项目的.gitlab-ci.yml中定义了管道以及作业及其组成部分的步骤。 该文件是项目存储库的一部分。 它具有完整的版本,开发人员可以使用他们选择的任何IDE对其进行编辑。 他们不需要让系统管理员或DevOps命令更改管道配置,因为他们可以自己进行更改。 .gitlab-ci.yml确定管道的结构和顺序,并确定需要使用GitLab Runner (运行任务的代理)完成哪些工作,以及在某些情况下(例如,当过程成功完成或退出时)应做出的决定。系统。


添加作业以运行跨项目管道


从GitLab 11.8开始,GitLab提供了新的CI / CD配置语法来运行跨项目管道,可以在pipline配置规则中找到该语法 。 以下代码说明了如何配置桥作业以运行下行链路管道:


 // job1  job    deploy: stage: Deploy script: this is my script // job2  bridge job   ,   -  Android: stage: Trigger-cross-projects trigger: mobile/android 

在以上示例中,一旦在部署阶段成功完成了部署作业,Android Bridge的任务就会启动。 其初始状态将待定。 GitLab将在mobile / android项目中创建一个下游管道,一旦创建,Android作业将成功。 在这种情况下,mobile / android是此项目的完整路径。


创建上游管道的用户必须具有对下游项目的访问权限(在这种情况下,为mobile / android)。 如果找不到下游项目,或者用户没有访问权限在此处创建管道,则Android作业将收到失败状态。


从上游到下游管道的图表概述


GitLab CI / CD允许您可视化管道配置。 在下图中,组装,测试和部署步骤是上游项目的一部分。 成功完成部署作业后,将并行启动四个跨项目,您可以通过单击下游作业之一来继续进行。


图片


在下图中,您可以看到降序支付线“服务-财务”。 现在,您可以向左滚动到上升管道,向右滚动回到下降管道,或选择另一个下降管道。


图片


定义子管道分支


您可以指定降级管道将使用的分支名称:


 trigger: project: mobile/android branch: stable-11-2 

使用project关键字指示下游项目的完整路径。 使用branch关键字确定分支的名称。 在创建下行管道时,GitLab将使用当前在HEAD分支中的提交。


将变量传递到下降管道


有一天,您可能想将变量传递给下降的管道。 您可以使用变量关键字来完成此操作,就像使用常规作业定义一样。


 Android: variable: ENVIRONMENT: 'This is the variable value for the downstream pipeline' stage: Trigger-cross-projects trigger: mobile/android 

ENVIRONMENT变量将传递到降序管道中定义的每个作业。 每当GitLab Runner选择作业时,它将作为环境变量使用。


跨项目总管道


.gitlab-ci.yml确定CI / CD阶段的顺序,要执行的任务以及在什么条件下启动或跳过任务。 向该文件添加带有trigger关键字的“ bridge job”可用于运行跨项目管道。 我们可以将参数传递给降序管道中的作业,甚至可以定义降序管道将使用的分支。


管道可以是具有许多顺序和并行任务的复杂结构,并且正如我们刚刚了解的那样,有时它们可​​以运行下游管道。 为了简化对包括下行管道在内的管道流的理解,GitLab提供了用于查看管道及其状态的管道。


图片


另请阅读我们博客上的其他文章:


Source: https://habr.com/ru/post/zh-CN467107/


All Articles