查看“GitLab 合并请求的流水线”的源代码
←
GitLab 合并请求的流水线
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
您可以将流水线配置为在每次将更改提交到分支时运行。 这种类型的流水线称为分支流水线。 或者,您可以将流水线配置为在每次更改合并请求的源分支时运行。这种类型的流水线称为合并请求流水线。 <br> 分支流水线: * 当您将新提交推送到分支时运行。 * 是默认类型的流水线。 * 可以访问一些预定义的变量。 * 可以访问受保护的变量 和受保护的 runners。 <br> 合并请求流水线: * 默认情况下不运行。CI/CD 配置文件中的作业必须配置为在合并请求流水线中运行。 * 如果已配置,合并请求流水线会在您执行以下操作时运行: ** 从具有一个或多个提交的源分支创建新的合并请求。 ** 将新提交推送到源分支以获取合并请求。 ** 从合并请求的 流水线 选项卡中选择 运行流水线。仅当配置合并请求流水线并且源分支至少有一个提交时,此选项才可用。 * 可以访问更多预定义变量。 * 无权访问受保护的变量 或受保护的 runners。 <br> == 合并请求的流水线类型 == 合并请求的三种流水线类型是: * 合并请求流水线,它在合并请求的源分支中的更改上运行。 * 合并结果流水线,它运行在源分支的更改与目标分支的更改组合的结果上。 * 合并队列,在同时合并多个合并请求时运行。来自每个合并请求的更改与之前排队的合并请求中的更改合并到目标分支中,以确保它们一起生效。 <br> === 先决条件 === 使用合并请求流水线: * 您的项目的 CI/CD 配置文件,必须配置为在合并请求流水线中运行作业。为此,您可以使用: ** rules。 ** only/except。 * 您必须至少在源项目中拥有开发人员角色才能运行合并请求的流水线。 * 您的仓库必须是 GitLab 仓库,而不是外部仓库。 <br> <span id="使用-rules-添加作业"></span> == 使用 rules 添加作业 == 您可以使用 rules 关键字将作业配置为在合并请求的流水线中运行。例如: <pre>job1: script: - echo "This job runs in merge request pipelines" rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event'</pre> <br> 您还可以使用 workflow: rules 关键字将整个流水线配置为在合并请求流水线中运行。例如: <pre>workflow: rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' job1: script: - echo "This job runs in merge request pipelines" job2: script: - echo "This job also runs in merge request pipelines"</pre> <br> <span id="使用-only-添加作业"></span> == 使用 only 添加作业 == 您可以使用带有 merge_requests 的 only 关键字将作业配置为在合并请求的流水线中运行。 <pre>job1: script: - echo "This job runs in merge request pipelines" only: - merge_requests</pre> <span id="gitlab-作业"></span> = GitLab 作业 = 流水线配置从作业开始。作业是 .gitlab-ci.yml 文件中最基本的元素。 <br> 作业是: * 定义了约束条件,说明它们应该在什么条件下执行。 * 具有任意名称的顶级元素,并且必须至少包含 script 子句。 * 不限制可以定义的数量。 <br> 例如: <pre>job1: script: "execute-script-for-job1" job2: script: "execute-script-for-job2"</pre> 上面的示例是最简单的 CI/CD 配置,具有两个单独的作业,其中每个作业执行不同的命令。 当然,命令可以直接执行代码(./configure;make;make install)或在仓库中运行脚本(test.sh)。 <br> 作业由 runners 拾取并在 runner 的环境中执行。重要的是,每个作业都是相互独立运行的。 <br> == 流水线中分组作业 == 如果您有许多类似的作业,您的流水线图会变得很长且难以阅读。 您可以自动将相似的作业组合在一起。如果作业名称以某种方式格式化,它们将在常规流水线图(而不是迷你图)中折叠成一个组。 <br> 要创建一组作业,请在 CI/CD 流水线配置文件中,将每个作业名称用数字和以下之一分隔: * 斜线(/),例如 slash-test 1/3、slash-test 2/3、slash-test 3/3。 * 冒号 (:),例如 colon-test 1:3、colon-test 2:3、colon-test 3:3。 * 一个空格,例如 space-test 0 3、space-test 1 3、space-test 2 3。 您可以互换使用这些符号。 <br> 在下面的示例中,这三个作业位于名为 build ruby 的组中: <pre>build ruby 1/3: stage: build script: - echo "ruby1" build ruby 2/3: stage: build script: - echo "ruby2" build ruby 3/3: stage: build script: - echo "ruby3"</pre> 流水线图显示了一个名为 build ruby 的组,其中包含三个作业。 <br> 通过从左到右比较数字来对作业进行排序。您通常希望第一个数字是索引,第二个数字是总数。 <br> == 隐藏作业 == 要暂时禁用作业而不将其从配置文件中删除: <ul> <li><p>注释掉作业的配置:</p> <pre> # hidden_job: # script: # - run test</pre></li> <li><p>以点(.)开头的作业名称,它不会被 GitLab CI/CD 处理:</p> <pre> .hidden_job: script: - run test</pre></li></ul> <br> 您可以使用以 . 开头的隐藏作业作为可重用配置的模板: * extends 关键字。 * YAML 锚点。 <br> == 控制默认关键字和全局变量的继承 == 您可以控制以下事项的继承: * 默认关键字 和 inherit:default。 * 全局变量 和 inherit:variables。 <br> 例如: <pre>default: image: 'ruby:2.4' before_script: - echo Hello World variables: DOMAIN: example.com WEBHOOK_URL: https://my-webhook.example.com rubocop: inherit: default: false variables: false script: bundle exec rubocop rspec: inherit: default: [image] variables: [WEBHOOK_URL] script: bundle exec rspec capybara: inherit: variables: false script: bundle exec capybara karma: inherit: default: true variables: [DOMAIN] script: karma</pre> <br> 在这个例子中: * rubocop: ** 继承:没有。 * rspec: ** 继承:默认的 image 和 WEBHOOK_URL 变量。 ** 不继承:默认的 before_script 和DOMAIN 变量。 * capybara: ** 继承:默认的 before_script 和image。 ** 不继承:DOMAIN 和WEBHOOK_URL 变量。 * karma: ** 继承:默认的 image 和before_script,以及 DOMAIN 变量。 ** 不继承:WEBHOOK_URL 变量。
返回至“
GitLab 合并请求的流水线
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
基础知识
正则表达式
Markdown
分布式
项目管理
系统集成项目管理基础知识
云原生
Docker
云原生安全
云原生词汇表
十二因素应用
Kubernetes
音频处理
音频合成
Edge-tts
CMS系统
Docsify
VuePress
Mediawiki
自动生成
Marp
CI/CD
GitLab
设计
颜色
平面设计
AI
数字人
操作系统
GNU/Linux
数据库
Mysql
工具
链入页面
相关更改
特殊页面
页面信息