前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GitLabCI系列之流水线语法第二部分

GitLabCI系列之流水线语法第二部分

作者头像
DevOps云学堂
发布2020-05-08 11:42:30
1.4K0
发布2020-05-08 11:42:30
举报
文章被收录于专栏:DevOps持续集成

本文是《GitLabCI实践》教程部分内容,点击上面图片报名学习!

tags

用于从允许运行该项目的所有Runner列表中选择特定的Runner,在Runner注册期间,您可以指定Runner的标签。tags可让您使用指定了标签的跑步者来运行作业,此runner具有ruby和postgres标签。

代码语言:javascript
复制
job:
  tags:
    - ruby
    - postgres

给定带有osx标签的OS X Runner和带有windows标签的Windows Runner,以下作业将在各自的平台上运行。

代码语言:javascript
复制
windows job:
  stage:
    - build
  tags:
    - windows
  script:
    - echo Hello, %USERNAME%!

osx job:
  stage:
    - build
  tags:
    - osx
  script:
    - echo "Hello, $USER!"

allow_failure

allow_failure允许作业失败,默认值为false 。启用后,如果作业失败,该作业将在用户界面中显示橙色警告. 但是,管道的逻辑流程将认为作业成功/通过,并且不会被阻塞。假设所有其他作业均成功,则该作业的阶段及其管道将显示相同的橙色警告。但是,关联的提交将被标记为"通过",而不会发出警告。

代码语言:javascript
复制
job1:
  stage: test
  script:
    - execute_script_that_will_fail
  allow_failure: true

when

on_success前面阶段中的所有作业都成功(或由于标记为allow_failure而被视为成功)时才执行作业。这是默认值。on_failure当前面阶段出现失败则执行。

always 执行作业,而不管先前阶段的作业状态如何,放到最后执行。总是执行。

manual 手动

manual -手动执行作业,不会自动执行,需要由用户显式启动. 手动操作的示例用法是部署到生产环境. 可以从管道,作业,环境和部署视图开始手动操作。

此时在deploy阶段添加manual,则流水线运行到deploy阶段为锁定状态,需要手动点击按钮才能运行deploy阶段。

delayed 延迟

delayed 延迟一定时间后执行作业(在GitLab 11.14中已添加)。

有效值'5',10 seconds,30 minutes, 1 day, 1 week 。

retry

配置在失败的情况下重试作业的次数。

当作业失败并配置了retry ,将再次处理该作业,直到达到retry关键字指定的次数。如果retry设置为2,并且作业在第二次运行成功(第一次重试),则不会再次重试. retry值必须是一个正整数,等于或大于0,但小于或等于2(最多两次重试,总共运行3次)

代码语言:javascript
复制
unittest:
  stage: test
  retry: 2
  script:
    - ech "run test"

默认情况下,将在所有失败情况下重试作业。为了更好地控制retry哪些失败,可以是具有以下键的哈希值:

  • max :最大重试次数.
  • when :重试失败的案例.

根据错误原因设置重试的次数。

代码语言:javascript
复制
always :在发生任何故障时重试(默认).
unknown_failure :当失败原因未知时。
script_failure :脚本失败时重试。
api_failure :API失败重试。
stuck_or_timeout_failure :作业卡住或超时时。
runner_system_failure :运行系统发生故障。
missing_dependency_failure: 如果依赖丢失。
runner_unsupported :Runner不受支持。
stale_schedule :无法执行延迟的作业。
job_execution_timeout :脚本超出了为作业设置的最大执行时间。
archived_failure :作业已存档且无法运行。
unmet_prerequisites :作业未能完成先决条件任务。
scheduler_failure :调度程序未能将作业分配给运行scheduler_failure。
data_integrity_failure :检测到结构完整性问题。

timeout 超时

特定作业配置超时,作业级别的超时可以超过项目级别的超时,但不能超过Runner特定的超时。

代码语言:javascript
复制
build:
  script: build.sh
  timeout: 3 hours 30 minutes

test:
  script: rspec
  timeout: 3h 30m
项目设置流水线超时时间

超时定义了作业可以运行的最长时间(以分钟为单位)。这可以在项目的"设置">" CI / CD">"常规管道"设置下进行配置 。默认值为60分钟。

runner超时时间

此类超时(如果小于项目定义的超时 )将具有优先权。此功能可用于通过设置大超时(例如一个星期)来防止Shared Runner被项目占用。未配置时,Runner将不会覆盖项目超时。


parallel

配置要并行运行的作业实例数,此值必须大于或等于2并且小于或等于50。

这将创建N个并行运行的同一作业实例. 它们从job_name 1/N到job_name N/N依次命名。

代码语言:javascript
复制
codescan:
  stage: codescan
  tags:
    - build
  only:
    - master
  script:
    - echo "codescan"
    - sleep 5;
  parallel: 5

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

本文分享自 DevOps持续集成 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • tags
  • allow_failure
  • when
    • manual 手动
      • delayed 延迟
      • retry
      • timeout 超时
        • 项目设置流水线超时时间
          • runner超时时间
          • parallel
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档