job/script/before_script/after_script/stages/stage/variables
每个项目使用.gitlab-ci.yml文件配置GitlabCI/CD管道,文件中可以定义一个或多个作业(job),每个作业必须具有唯一的名称(不能使用关键字),每个作业都是独立执行的,每个作业至少包含一个script
job1:
script: "execute-script-job1"
job2:
script: "execute-script-job2"
每个作业至少包含一个script,有时script命令需要使用单引号或双引号引起来,例如,包含(:)需要加引号,以便
job:
script:
- uname -a
- bundle exec rspec
用于定义一个命令,该命令在每个作业之前运行.必须是一个数组,指定的script与主脚本中指定的任何脚本串联在一个shell中执行.
before_script失败会导致整个作业失败,其他作业将不再执行,作业失败不会影响after_script运行.
用于定义将每个作业(包括失败的作业)之后运行的命令.必须是数组.
指定的脚本在新的shell中执行.
用于定义作业可以使用的阶段,并且是全局定义的.
同一阶段的作业并行运行,不同阶段的作业按顺序执行.
stages:
- build
- test
- deploy
依赖于全局定义的stages,允许将作业分为不同的阶段,并且同一stage作业可以并行执行
.pre 始终是整个管道的第一个运行阶段
.post始终是管道的最后一个运行阶段
用户定义的阶段都是在两者之间运行.
.pre和.post的顺序无法改变,若果管道中仅包含.pre和.post阶段的作业,则不会创建管道.
codescan:
stage: .pre
tags:
- build
only:
- master
script:
- echo "codeoscan"
定义变量,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"
如果流水线一直处于等待阻塞的状态,需要到管理页面
点击图中runners 页面中某一个runner后面的编辑,选中如下图选项,运行无标记的作业