目录
- 第一章 – Xcode GitLab_CI_CD
- 第二章 – Xcode GitLab_CI_CD_pipelines
- 第三章 – Xcode GitLab_CI_CD_Jobs
- 第四章 – Xcode GitLab_CI_CD_runners
- 第五章 – Xcode GitLab_CI_CD_gitlab_ci
管道配置从作业开始。作业是文件的最基本元素.gitlab-ci.yml。
Jobs是:
- 用约束来定义,说明它们应该在什么条件下执行。
- script具有任意名称且必须至少包含子句的顶级元素。
- 可以定义的数量不受限制。
例如:
job1:
script: "execute-script-for-job1"
job2:
script: "execute-script-for-job2"
上面的示例是最简单的 CI/CD 配置,具有两个单独的作业,其中每个作业执行不同的命令。当然,命令可以直接执行代码(./configure;make;make install)或在存储库中运行脚本(test.sh)。
job由runners拾取并在跑步者的环境中执行。重要的是每个作业彼此独立运行。
查看管道中的作业 访问管道时,您可以查看该管道的相关作业。
单击单个作业会显示其作业日志,并允许您:
- 取消作业。
- 重试作业。
- 清除作业日志
查看项目中的所有作业
要查看项目中运行的作业的完整列表:
- 在顶部栏上,选择Menu > Projects并找到该项目。
- 在左侧边栏上,选择CI/CD > Jobs。
管道中作业的顺序
管道中作业的顺序取决于管道图的类型。
例如:
职位名称限制
版本历史
- 在 GitLab 14.5 中的 GitLab.com 上启用 255 个字符的作业长度。
- 在 GitLab 14.10 中普遍可用。功能标志ci_validate_job_length已删除。 您不能将这些关键字用作作业名称:
image services stages types before_script after_script variables cache include true false nil
作业名称不得超过 255 个字符。
为您的工作使用唯一名称。如果多个作业具有相同的名称,则只会将一个添加到管道中,并且很难预测会选择哪一个。
在管道中分组作业
如果您有许多类似的工作,您的管道图就会变得很长且难以阅读。
您可以自动将相似的工作组合在一起。如果作业名称以某种方式格式化,它们将在常规管道图(而不是迷你图)中折叠成一个组。
如果您没有看到其中的重试或取消按钮,您可以识别管道何时已分组作业。将鼠标悬停在它们上会显示分组作业的数量。选择以展开它们。
要创建一组作业,请在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。 您可以互换使用这些符号。
在下面的示例中,这三个作业位于一个名为 的组中build ruby:
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"
管道图显示了一个以build ruby三个作业命名的组。
通过从左到右比较数字来对作业进行排序。您通常希望第一个数字是索引,第二个数字是总数。
隐藏职位
要暂时禁用作业而不将其从配置文件中删除:
- 注释掉作业的配置:
# hidden_job:
# script:
# - run test
- 作业名称以点 ( .) 开头,GitLab CI/CD 不处理它:
.hidden_job:
script:
- run test
您可以使用.以模板开头的隐藏作业作为可重用配置的模板:
控制默认关键字和全局变量的继承
您可以控制以下内容的继承:
For example:
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
在这个例子中:
rubocop: 继承:没有。 rspec: 继承:默认值image和WEBHOOK_URL变量。 不继承:默认值before_script和DOMAIN变量。 capybara: 继承:默认before_script和image. 不继承:DOMAINandWEBHOOK_URL变量。 karma: 继承:默认值imageandbefore_script和DOMAIN变量。 不继承:WEBHOOK_URL变量。