【GitLab管道】tags、allow_failure、when、retry、timeout、parallel、image、services、environment、include、extends、default

简介

CI/CD

基于某种工具或平台实现代码自动化构建、部署

官方文档:https://docs.gitlab.cn/jh/ci/yaml/

https://www.jianshu.com/p/3c0cbb6c2936

tags

用于指定job在特定的runner上运行

job1:
 tags:
  - windows
job2:
 tags:
  - linux

allow_failure

allow_failure允许作业失败,默认值是false。启用后如果作业失败,管道逻辑流程不会被阻塞

when

用来控制作业运行
状态:

  • on_success:前面阶段中所有作业都成功才执行作业,默认值
  • on_failure:当前面阶段出现失败时执行
  • always:总是执行作业
  • manual:手动执行作业
  • delayed:延迟执行作业,start_in配置延迟时间
job1:
 stage: restore
 script:
  - echo 'job1 script'
 when: manual
job2:
 stage: compile
 script:
  -echo 'job2 script'
job3:
 stage: deploy
 script:
  - echo 'job3 script'
 when: always

retry

失败重试作业次数

test:
  stage: test
  script:
    - echo "script in test..."
    - error
  retry: 2

timeout

作业超时时间

job1:
 timeout: 3h 30m

parallel

parallel可以指定一个任务并行运行多次
如下,表示当前任务并行运行5次

test:
  stage: test
  before_script:
    - echo "before script in test..."
  script:
    - echo "script in test..."
  parallel: 5

image

默认再注册runner的时候都需要填写一个基础镜像,请记住一点只要使用执行器为docker类型的runner,所有操作都会在容器中运行。如果全局指定了image则所有作业使用此image创建容器,并在其中运行。
也可以再job中指定image。如果没有再全局和job中指定image,则使用runner时指定的默认镜像

services

工作期间运行另一个docker容器,并link到容器,这样就可以再构建期间访问服务容器

services:
 - name: mysql:latest
   alias: mysql-1

environment

inlude

使用include您可以将一个长的.gitlab-ci.yml文件拆分为多个文件以提高可读性,或减少同一配置在多个位置的重复。
include 子键:

  • include:local
    包含与.gitlab-ci.yml文件位于同一仓库中的文件。
include:
  local: '/.ci/job3.yml'
  • include:file
  • include:remote
  • include:template

extends

使用extends来重用配置 section。它是YAML锚点的替代方案,并且更加灵活和可读。

.tests:
  script: rake test
  stage: test
  only:
    refs:
      - branches

rspec:
  extends: .tests
  script: rake rspec
  only:
    variables:
      - $RSPEC

rspec 作业使用来自.tests 模板作业的配置。根据键执行反向深度合并。不合并键的值。
结果是这个 rspec 作业:

rspec:
  script: rake rspec
  stage: test
  only:
    refs:
      - branches
    variables:
      - $RSPEC

default

为作业设置全局默认值。以下关键字可以设置全局默认值:

  • after_script
  • artifacts
  • before_script
  • cache
  • image
  • interruptible
  • retry
  • services
  • tags
  • timeout
posted @   .Neterr  阅读(295)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2020-04-25 缓存穿透、缓存击穿、缓存雪崩的解决方案
2020-04-25 ASP.NET Core-使用HealthCheck对程序健康检查
2020-04-25 【.NET Core框架】ChangeToken

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示