【GitLab管道】tags、allow_failure、when、retry、timeout、parallel、image、services、environment、include、extends、default
简介
CI/CD
基于某种工具或平台实现代码自动化构建、部署
官方文档:https://docs.gitlab.cn/jh/ci/yaml/
https://www.jianshu.com/p/3c0cbb6c2936
tags
用于指定job在特定的runner上运行
job1:
tags:
- windows
job2:
tags:
- linux
allow_failure
allow_failure允许作业失败,默认值是false。启用后如果作业失败,管道逻辑流程不会被阻塞
when
用来控制作业运行
状态:
- on_success:前面阶段中所有作业都成功才执行作业,默认值
- on_failure:当前面阶段出现失败时执行
- always:总是执行作业
- manual:手动执行作业
- delayed:延迟执行作业,
start_in
配置延迟时间
job1:
stage: restore
script:
- echo 'job1 script'
when: manual
job2:
stage: compile
script:
-echo 'job2 script'
job3:
stage: deploy
script:
- echo 'job3 script'
when: always
retry
失败重试作业次数
test:
stage: test
script:
- echo "script in test..."
- error
retry: 2
timeout
作业超时时间
job1:
timeout: 3h 30m
parallel
parallel可以指定一个任务并行运行多次
如下,表示当前任务并行运行5次
test:
stage: test
before_script:
- echo "before script in test..."
script:
- echo "script in test..."
parallel: 5
image
默认再注册runner的时候都需要填写一个基础镜像,请记住一点只要使用执行器为docker类型的runner,所有操作都会在容器中运行。如果全局指定了image则所有作业使用此image创建容器,并在其中运行。
也可以再job中指定image。如果没有再全局和job中指定image,则使用runner时指定的默认镜像
services
工作期间运行另一个docker容器,并link到容器,这样就可以再构建期间访问服务容器
services:
- name: mysql:latest
alias: mysql-1
environment
inlude
使用include
您可以将一个长的.gitlab-ci.yml
文件拆分为多个文件以提高可读性,或减少同一配置在多个位置的重复。
include 子键:
- include:local
包含与.gitlab-ci.yml
文件位于同一仓库中的文件。
include:
local: '/.ci/job3.yml'
- include:file
- include:remote
- include:template
extends
使用extends
来重用配置 section
。它是YAML锚点的替代方案,并且更加灵活和可读。
.tests:
script: rake test
stage: test
only:
refs:
- branches
rspec:
extends: .tests
script: rake rspec
only:
variables:
- $RSPEC
rspec 作业使用来自.tests 模板作业的配置。根据键执行反向深度合并。不合并键的值。
结果是这个 rspec 作业:
rspec:
script: rake rspec
stage: test
only:
refs:
- branches
variables:
- $RSPEC
default
为作业设置全局默认值。以下关键字可以设置全局默认值:
- after_script
- artifacts
- before_script
- cache
- image
- interruptible
- retry
- services
- tags
- timeout
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2020-04-25 缓存穿透、缓存击穿、缓存雪崩的解决方案
2020-04-25 ASP.NET Core-使用HealthCheck对程序健康检查
2020-04-25 【.NET Core框架】ChangeToken