GitLab CI/CD语法一

38 阅读2分钟

job

在每个项目中,使用名为.gitlab-ci.ymlde YAML文件配置GitLab CI/CD管道。在文件中可以定义一个或多个作业(job)。每个作业必须有唯一的名称(不能使用关键字),每个作业是独立执行的。作业定义了在约束条件下进行的相关操作,每个作业至少要包含一个script。

job1:
  script: "execute-script-for-job1"
job2:
  script: "execute-script-for-job2"

这里在pipeline中定义了两个作业,每个作业运行不同的命令。命令可以是shell脚本。

script

每个作业至少包含一个script

job:
  script:
    - uname -a
    - bundle exec repec

注意:有时,script命令将需要用单引号或双引号引起来。例如,包含冒号命令(:)需要加引号,以便被包裹的YAML解析器知道以作为字符串整体进行解析,而不是一个"键:值"对,使用如下特殊字符时候要尤其注意到这一点: :{,},[,],,,&,*,#,?,|,-,<,>,=!, %, @,

before_script

用于定义一个命令,该命令在每个作业之前运行。必须是一个数组。指定的script与著脚本中指定的任何脚本串联在一起,并在单个shell一起执行。before_script失败导致整个作业失败,其他作业将不再执行。作业失败不会影响after_script运行。

stages

用于定义作业可以使用的阶段,并且是全局定义的。同一阶段的作业并行运行,不同阶段按顺序执行。

.pre & .post

  • .pre始终是整个管道的第一个运行阶段。.post始终是整个管道的最后一个运行阶段。用户定义的阶段都在两者之间运行。
  • .pre和.post的顺序无法更改。如果管道仅包含.pre或.post的作业,则不会创建管道
codescan:
  stage: .pre
  tags:
    - build
  only:
    - master
  script:
    - echo "codescan"

stage

在按JOB定义的,并且依赖于全局定义的stages。它允许将作业分为不同的阶段,并且同一stage作业可以并行执行(取决于特定条件)