前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用GitLab CI/CD 触发多项目管道

如何使用GitLab CI/CD 触发多项目管道

作者头像
DevOps云学堂
发布2020-07-23 20:21:45
6.8K0
发布2020-07-23 20:21:45
举报
文章被收录于专栏:DevOps持续集成DevOps持续集成

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

代码运行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配置语法,用于触发跨项目管道。以下代码说明了配置bridge作业以触发下游管道:

代码语言:javascript
复制
//job1 is a job in the upstream project
deploy:
 stage: Deploy
 script: this is my script

//job2 is a bridge job in the upstream project which triggers cross-project pipeline
Android:
 stage: Trigger-cross-projects
  trigger: mobile/android

在上面的示例中,一旦部署作业在部署阶段成功完成,则将启动Android作业。该作业的初始状态为待定。GitLab将在mobile/android项目中创建一个下游管道,一旦创建管道,Android作业将成功。在这种情况下,mobile/android是该项目的完整路径。

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

从上游管道图浏览到下游

GitLab CI/CD使可视化管道配置成为可能。在下图中,构建,测试和部署阶段是上游项目的一部分。一旦部署作业成功,将并行触发四个其他项目,您将能够通过单击下游作业之一来浏览到它们。

在下图中,可以看到下游管道。现在,我们可以向左滚动到上游管道,向右滚动回到下游管道,或者选择另一个下游管道。

指定下游管道分支

可以指定下游管道将使用的分支名称:

代码语言:javascript
复制
trigger:
     project: mobile/android
     branch: stable-11-2

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

将变量传递到下游管道

有时您可能想将变量传递到下游管道。您可以使用variables关键字来执行此操作,就像定义常规作业时一样。

代码语言:javascript
复制
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作业" 可用于触发跨项目管道。我们可以将参数传递给下游管道中的作业,甚至可以定义下游管道将使用的分支。

管道可以是具有许多顺序和并行作业的复杂结构组成,并且正如我们刚刚了解的那样,有时它们可以触发下游管道。为了更容易理解管道(包括其下游管道)的流程,GitLab提供了用于查看管道及其状态的管道图。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps云学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么需要验证代码关联的其他组件 ?
  • 跨项目管道
  • GitLab CI/CD配置文件
  • 添加跨项目管道触发作业
  • 从上游管道图浏览到下游
  • 指定下游管道分支
  • 将变量传递到下游管道
相关产品与服务
CODING DevOps
CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档