GitLab CI语法[tags|allow_failure|when|retry|timeout|paraller]
tags
job:
tags:
- ruby
- postgres
osx
标签的OS X Runner和带有windows
windows job:
stage:
- build
tags:
- windows
script:
- echo Hello, %USERNAME%!
osx job:
stage:
- build
tags:
- osx
script:
- echo "Hello, $USER!"
允许作业失败,默认值为false
job1:
stage: test
script:
- execute_script_that_will_fail
allow_failure: true
前面阶段中的所有作业都成功(或由于标记为allow_failure
而被视为成功)时才执行作业。 这是默认值。
2.on_failure
当前面阶段出现失败则执行。
3.always
-手动执行作业,不会自动执行,需要由用户显式启动. 手动操作的示例用法是部署到生产环境. 可以从管道,作业,环境和部署视图开始手动操作。
延迟一定时间后执行作业(在GitLab 11.14中已添加)。
有效值'5',10 seconds,30 minutes, 1 day, 1 week
实验demo
before_script:
- echo "before-script!!"
variables:
DOMAIN: example.com
stages:
- build
- test
- codescan
- deploy
build:
before_script:
- echo "before-script in job"
stage: build
script:
- echo "mvn clean "
- echo "mvn install"
- echo "$DOMAIN"
after_script:
- echo "after script in buildjob"
unittest:
stage: test
script:
- ech "run test"
when: delayed
start_in: '30'
allow_failure: true
deploy:
stage: deploy
script:
- echo "hello deploy"
- sleep 2;
when: manual
codescan:
stage: codescan
script:
- echo "codescan"
- sleep 5;
when: on_success
after_script:
- echo "after-script"
- ech
当作业失败并配置了retry
,将再次处理该作业,直到达到retry
关键字指定的次数。如果retry
设置为2,并且作业在第二次运行成功(第一次重试),则不会再次重试. retry
retry的精致重试
retry
哪些失败,可以是具有以下键的哈希值:
max
:最大重试次数.when
:重试失败的案例.
always :在发生任何故障时重试(默认). unknown_failure :当失败原因未知时。 script_failure :脚本失败时重试。 api_failure :API失败重试。 stuck_or_timeout_failure :作业卡住或超时时。 runner_system_failure :运行系统发生故障。 missing_dependency_failure: 如果依赖丢失。 runner_unsupported :Runner不受支持。 stale_schedule :无法执行延迟的作业。 job_execution_timeout :脚本超出了为作业设置的最大执行时间。 archived_failure :作业已存档且无法运行。 unmet_prerequisites :作业未能完成先决条件任务。 scheduler_failure :调度程序未能将作业分配给运行scheduler_failure。 data_integrity_failure :检测到结构完整性问题。
定义当出现脚本错误重试两次,也就是会运行三次。
unittest: stage: test tags: - build only: - master script: - ech "run test" retry: max: 2 when: - script_failure
效果
作业超时时间设置
build:
script: build.sh
timeout: 3 hours 30 minutes
test:
script: rspec
timeout: 3h 30m
项目超时时间设置
"设置">" CI / CD">"常规管道"设置下进行配置 。 默认值为60分钟。
Runner超时时间设置
示例1-运行程序超时大于项目超时
runner超时设置为24小时,项目的CI / CD超时设置为**2小时。该工作将在2小时后超时。
示例2-未配置运行程序超时
runner不设置超时时间,项目的CI / CD超时设置为2小时。该工作将在2小时后超时。
示例3-运行程序超时小于项目超时
runner超时设置为30分钟,项目的CI / CD超时设置为2小时。工作在30分钟后将超时
这将创建N个并行运行的同一作业实例. 它们从job_name 1/N
到job_name N/N
codescan:
stage: codescan
tags:
- build
only:
- master
script:
- echo "codescan"
- sleep 5;
parallel: 5
before_script:
- echo "before-script!!"
variables:
DOMAIN: www.hebbao.com
stages:
- build
- test
- codescan
- deploy
build:
before_script:
- echo "before-script in job"
stage: build
script:
- echo "mvn clean "
- echo "mvn install"
- echo "$DOMAIN"
after_script:
- echo "after script in buildjob"
unittest:
stage: test
script:
- ech "run test"
when: delayed
start_in: '5'
allow_failure: true
retry:
max: 1
when:
- script_failure
timeout: 1 hours 10 minutes
deploy:
stage: deploy
script:
- echo "hello deploy"
- sleep 2;
when: manual
codescan:
stage: codescan
script:
- echo "codescan"
- sleep 5;
when: on_success
parallel: 5
after_script:
- echo "after-script"
- ech

评论