Devops GitLab Pipline

1.流水线

  流水线是一组分阶段执行的JOB,一个stage中的所有job都是并行执行的,如果一个stage中的所有job都执行成功了,那么它将流转到下一个stage,如果其中的一个job失败,那么下一个阶段通常不会执行,

   

2.流水线的类型

  有三种类型的pipeline通常使用“pipeline”的简写。人们经常谈论它们,好像每一个都是“pipeline”,但实际上,它们只是一个完整管道的一部分。

   

CI Pipeline: 图上的两个stage 是在.gitlab-ci.yml文件中定义的。

Deploy Pipeline :图中的两个stage是定义在.gitlab-ci.yml文件中的,例如部署到staging环境 部署到生产环境

Project Pipline: 通过API触发的跨项目CI依赖关系,特别是对于微服务,但也适用于复杂的构建依赖项:例如API->前端、ce/ee->omnibus。 

3.Pipeline可容纳多个开发工作流:

   Branch Flow (e.g. different branch for dev, qa, staging, production).

   Trunk-based Flow (e.g. feature branches and single master branch, possibly with tags for releases).

   Fork-based Flow (e.g. merge requests come from forks).

   

对于job可以取消重试删除

4. .gitlab-ci.yml

 Gitlab Runner 使用.gitlab-ci.yml来管理项目的Job,从7.12版开始,GitLab CI使用YAML文件(.gitlab-ci.yml)对项目进行流水线的配置。它被放在根部并包含如何构建项目的定义

 下面讲解yml里面的几个重要的元素

 Jobs

    .gitlab-ci.yml 指定无限数量的作业,这些作业定义为具有任意名称的顶级元素,并且始终必须至少包含script子句 每一个job都是独立运行的,每个job必须有一个唯一的名称,但是有一些保留关键字不能用作job名称:

    

  job下面script元素是必须的:

job1:
  script: echo "job1"

job2:
  script: echo "job2"

before_script and after_script:

job1:
  script: echo "job1"

job2:
  script: echo "job2"
  
  
before_script:
  - echo "before_script"

before_scrip 用于定义应该在所有job之前运行的命令,包括部署job,但在恢复工件之后。它可以是数组或多行字符串。

可以看到在job2之前也运行了这个脚本

stages and stage:

  阶段用于定义作业可以使用的阶段,并且是全局定义的。阶段中元素的顺序定义了作业的执行顺序。同一阶段的job并行运行,下一阶段的作业在前一阶段的作业之后运行

  如果.gitlab-ci.yml中未定义任何阶段,则默认情况下允许将build,test和deploy用作作业的阶段。
 如果作业未指定阶段,则为该作业分配测试阶段。

 stage 是按job定义的,并且依赖于全局定义的stages。 它允许将job分为不同的阶段,并且同一stage的job可以并行执行。

  

 如:

stages:
  - build
  - test
  - deploy


job1:
  stage: build
  script: echo "job1"

job2:
  stage: build
  script: echo "job2"
  
job3: 
  stage: test
  script: echo "job3"

job4: 
  stage: deploy
  script: echo "job4"
  
  
before_script:
  - echo "before_script"

 script:

    script 脚本是作业所需的唯一必需关键字。 这是一个shell脚本 由runner执行,此参数还可以使用数组包含几个命令,脚本里面使用特殊符号需要注意

    

猜你喜欢

转载自blog.csdn.net/weixin_37650458/article/details/111130547
今日推荐