Gitlab中Pipeline语法一

Pipeline语法

job/script/before_script/after_script/stages/stage/variables

job

每个项目使用.gitlab-ci.yml文件配置GitlabCI/CD管道,文件中可以定义一个或多个作业(job),每个作业必须具有唯一的名称(不能使用关键字),每个作业都是独立执行的,每个作业至少包含一个script

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

script

每个作业至少包含一个script,有时script命令需要使用单引号或双引号引起来,例如,包含(:)需要加引号,以便

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

before_script

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

after_script

用于定义将每个作业(包括失败的作业)之后运行的命令.必须是数组.
指定的脚本在新的shell中执行.

stages

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

stages:
  - build
  - test
  - deploy

stage

依赖于全局定义的stages,允许将作业分为不同的阶段,并且同一stage作业可以并行执行

.pre 始终是整个管道的第一个运行阶段
.post始终是管道的最后一个运行阶段
用户定义的阶段都是在两者之间运行.
.pre和.post的顺序无法改变,若果管道中仅包含.pre和.post阶段的作业,则不会创建管道.

codescan:
  stage: .pre
  tags:
    - build
  only:
    - master
  script:
    - echo "codeoscan"

variables

定义变量,pipeline变量,job变量,job变量优先级最大.

示例

before_script:
  - echo "before_script!!!"

variables:
  DOMAIN: example.com

stages:
  - build
  - test
  - codescan
  - deploy

build:
  before_script:
    - echo "before_script in build job"
  stage: build
  script:
    - echo "mvn clean"
    - echo "mvn install"
    - echo "$DOMAIN"
  after_script:
    - echo "after_script in build job"
 
unittes:
  stage: test
  script:
    - echo "run test"

deploy:
  stage: deploy
  script:
    - echo "hello deploy"
    - sleep 2;

codescan:
  stage: codescan
  script:
    - echo "codescan"
    - sleep 5;
 
after_script:
  - echo "after_script"

Gitlab中Pipeline语法一_第1张图片

问题

如果流水线一直处于等待阻塞的状态,需要到管理页面
Gitlab中Pipeline语法一_第2张图片
点击图中runners 页面中某一个runner后面的编辑,选中如下图选项,运行无标记的作业
Gitlab中Pipeline语法一_第3张图片

你可能感兴趣的:(gitlab,linux)