gitlab-ci.yml关键字(一)image、variables、include

news2025/1/11 20:08:51

image

这是一个全局关键字,如果流水线的执行器是使用docker来运行的话,那可以指定docker中的docker镜像。如果执行器是shell的话,那该关键字是无用的,即便机器中已近安装了docker的环境,该关键字可以在全局或者某一个job中使用都可以。
可以将其放在顶部,则这个镜像会成为所有job的默认环境。或者加一个default关键字类似:

image: node:alpine
default:
  image: node:alpine

上述表会在所有job执行之前安装node:alpine镜像。当然有可能流水线中若干的job其镜像不一定一样,也可以在每个job中各自添加镜像

job_name:
	image: node:latest

上述表示的就是在job_name这个任务中,会安装nodejs官方镜像来构建。
也可以是一个完整的镜像地址

job_name:
	image:registry.example.com/my-group/my-project/ruby:2.7

上述表示在job_name中会使用ruby2.7的镜像

当然有时会全局的镜像和job内种的镜像同时存在,此时job中的镜像会覆盖全局的默认镜像。例如:

default:
  image: ruby:3.0

rspec:
  script: bundle exec rspec

rspec 2.7:
  image: registry.example.com/my-group/my-project/ruby:2.7
  script: bundle exec rspec

在这个例子中ruby:3.0的镜像是所有流水线任务的默认镜像,但在rspec 2.7这个job中并没有使用默认的,而是job内的ruby:2.7会覆盖全局的ruby:3.0

variables

这是一个全局关键字,可以定义在流水线中的变量,然后在各个地方使用这些变量,类似我们编程时声明的变量一样。
变量的名称可以使用数字,

  • 字母或者是下划线,在一些shell执行器中首字符必须是一个字母。
  • 这个变量必须是一个字符串

该关键字可以在全局或者某一个job中使用都可以
例子:

variables:
  NRM: 'http://npm.dc.xxx-it.com/'
  
pre:
  stage: .pre
  script: 
    - echo $NRM

上述定义了一个变量NRM表一个nrm源,然后在pre job中的.pre阶段打印出这个变量

效果如下:
在这里插入图片描述

除了我们自定义的一些变量之外,gitlab runner也提供了一些全局变量。可以使用export关键字打印出有哪些环境变量。

gloable_variables:
  script:
    - export

在这里插入图片描述
使用这些变量的方式也是$+名称

image: node:alpine

variables:
  NRM: 'http://npm.dc.xxx-it.com/'
  
pre:
  stage: .pre
  script: 
    - echo $NRM

gloable_variables:
  script:
    - export

use_gloable_variable:
  script:
    -echo $CI_COMMIT_AUTHOR

在这里插入图片描述

include

全局关键字。可以在本地的gitlab-ci.yml文件中引入其他地方的gitlab-ci.yml的配置文件。

include:local

可以使用include:local来引入同一个仓库同一个分支中的其他配置文件(其他配置文件必须是.yml 或者.ymal扩展名)
例如:

include:
  - local: '/templates/.gitlab-ci-template.yml'

include:project

可以通过include:project 来引入同一个gitlab 服务中其他项目中的gitlab-ci.yml配置
主要有下面几部分构成,

  • project:表在该gitlab服务器中的项目地址
  • file:一个数组,表引入该项目中的哪些文件
  • ref:非必须,表该项目中的那个分支。没有就是master(main)
include:
  - project: 'my-group/my-project'
    ref: main                                      # Git branch
    file: '/templates/.gitlab-ci-template.yml'
  - project: 'my-group/my-project'
    ref: v1.0.0                                    # Git Tag
    file: '/templates/.gitlab-ci-template.yml'
  - project: 'my-group/my-project'
    ref: 787123b47f14b552955ca2786bc9542ae66fee5b  # Git SHA
    file: '/templates/.gitlab-ci-template.yml'

include:remote

使用include:remote 可以通过一个完整的URL地址加载远端的gitlab-ci.yml的配置文件。
远端的配置文件使用HTTP/GTTPS 的GET请求可以获取的到

include:
  - remote: 'https://gitlab.com/example-project/-/raw/main/.gitlab-ci.yml'

这个关键字用得好的话非常有用,特别是在一些需要横向对接的团队。可以在业务团队中的项目流水线中直接include一个远端的地址,作为入口,引入远端的配置文件,而对接的公共服务团队只需维护远端真正的配置文件即可。这样,远端的配置文件进行修改或功能添加的时候所有引入这个文件的其他项目都可以同步更新对应的流水线脚本了

其他

查看所有gitlab CI/CD关键字列表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/118218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NeurIPS2021 | ViTAE+: vision transformer中的归纳偏置探索

参考资料:NeurIPS 2021 | ViTAE: vision transformer中的归纳偏置探索 - 知乎 paper地址:https://openreview.net/pdf?id_RnHyIeu5Y5 论文标题:ViTAE: Vision Transformer Advanced by Exploring Intrinsic Inductive Bias code&#xff…

假设检验之卡方检验

之前我对卡方检验的了解都是一知半解的,即知道作用是对离散变量分布差异的比较,根据期望频数和观察频数的差异计算出来一个卡方值,之后根据自由度和显著性水平查卡方分布对应的临界值,比较大小得出有无明显差异的结论。 一般我们都…

基于FPGA平台实现 ARM Cortex-M0 SOC(一)简介

本系列笔记为基于FPGA平台实现 ARM Cortex-M0 SOC 集创赛作品复盘 Platform: ARM Cortex-M0 Design Srart AT510 XLINX FPGA ARM MDK 5 CM0-Design start 是ARM公司放出的一个免费的ARM 内核学习版本,它比M3还要简单,并且官方把整块代码模糊化…

TFN CK1840B 喇叭天线 定向 18GHz~40GHz

TFN CK1840B 喇叭天线 定向 18GHz~40GHz 产品概述 TFN CK1840B喇叭天线工作频率为 18GHz~40GHz。具有频带宽, 性能可靠, 增益高等优 点, 是理想的 EMC 测试、电子对抗等领域的定向接收、发射天线。 应用领域 ● 电子对抗领域 ● EMC 测试…

基于python多光谱遥感数据处理、图像分类、定量评估及机器学习方法应用

普通数码相机记录了红、绿、蓝三种波长的光,多光谱成像技术除了记录这三种波长光之外,还可以记录其他波长(例如:近红外、热红外等)光的信息。与昂贵、不易获取的高光谱、高空间分辨率卫星数据相比,中等分辨…

Gateway

Gateway—SpringCloud微服务网关组件 一、Spring Cloud Gateway简介 1.为什么要用Gateway? 在微服务架构中,通常一个系统会被拆分为多个微服务,微服务之间的调用可以用OpenFeign,但面对这么多微服务客户端调用会遇到哪些问题呢…

Hudi(3):Hudi之基本概念

目录 0. 相关文章链接 1. 时间轴(TimeLine) 1.1. Instant action:在表上执行的操作类型 1.2. Instant time 1.3. State 1.4. 两个时间概念 2. 文件布局(File Layout) 2.1. Hudi表的文件结构 2.2. Hudi存储的两…

Cocos 引擎生态部负责人李阳:己之所欲,可施于人,希望通过生态促进国内引擎技术发展

前言 “小小的身体,大大的能量,这个应该是我对大表姐最直接的感觉,在她娇小的身躯里蕴含了无限的精力和潜力,很像漫威里的神奇女侠,作为一个具备冒险精神的非典型程序员,大表姐热爱的体育活动都是很具挑战…

大数据系列——什么是ClickHouse?ClickHouse有什么用途?

目录 一、什么是ClickHouse 二、ClickHouse有什么用途 三、ClickHouse的不足 四、适用场景 五、ClickHouse特点 六、ClickHouse VS MySQL 七、类SQL 语句 八、核心概念 一、什么是ClickHouse clickHouse是俄罗斯的 Yandex 公司于 2016 年开源的列式存储数据库&#x…

win11系统用户名称为中文导致文件夹出现繁体字文件夹、系统路径配置错误修改教程(博主亲测,基于win11,系统文件保留)

写在前面:很多人在拿到新电脑激活那会,命名就是简单的中文,但是中文命名电脑系统名称,会导致系统用户文件夹自动命名为中文,在后期使用中会导致c盘系统用户文件夹下面出现不知名繁体字文件夹,甚至有的朋友会…

终难逃一阳

阳了,抗原试剂显示我阳了。每天都带口罩的我还是未能逃过此劫。真是覆巢之下,焉有完卵。 ​ 1.背景 12月初国家逐步放开防疫,随之而来的就是奥秘克戎肆虐全国。身边同事和朋友一个接着一个倒下,朋友圈里更是哀嚎一片。好在专家…

《CSAPP》笔记——链接、异常控制流、虚拟内存

文章目录传送门链接基础链接器的意义编译器驱动程序静态链接ELF目标文件格式可重定位目标文件符号和符号表链接过程符号解析解析规则静态链接库带有静态链接库的解析过程重定位重定位条目重定位节重定位符号引用重定位相对引用重定位绝对引用加载可执行目标文件动态链接共享库库…

Kafka 消费者组开发

Kafka consumer - 消费者组 上一篇文章学习到kafka消费者、消费者组之间处理消息的差异,总结起来就是: 同一个消费组的不同消费实例 共同消费topiic的消息, 一个消息只会消费一次; 也叫做集群消费同一个消息被不同的消费组同时消费&#xf…

机器学习基石1(ML基本概念和VC dimension)

文章目录一、什么是机器学习?二、什么时候可以使用机器学习?三、感知机perceptron四、机器学习的输入形式五、机器真的可以学习吗?六、vc dimension一、什么是机器学习? 其实第一个问题和第二个问题是穿插到一块儿回答的,首先机器学习要解决的是常规的…

RedisTemplate操作redis

目录 Redis Repositories方式 a、启用 Repository 功能 b、注解需要缓存的实体 c、创建一个 Repository 接口 d、测试类中测试 Redis Repositories方式 Spring Data Redis 从 1.7 开始提供 Redis Repositories ,可以无缝的转换并存储 domain objects&#xff0…

TOPSIS法(熵权法)(模型+MATLAB代码)

TOPSIS可翻译为逼近理想解排序法,国内简称为优劣解距离法 TOPSIS法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的距离 一、模型介绍 极大型指标(效益型指标) &#xff…

OR-Tools工具介绍以及实战(从入门到超神Python版)

目录前言0、安装一、什么是优化问题?1-1、优化问题介绍1-2、举例1-2-1、导入所需要的库1-2-2、声明求解器1-2-3、创建变量1-2-4、定义约束条件1-2-5、定义目标函数1-2-6、调用求解器,并且显示结果。二、python有关于各种优化问题示例2-1、简单的线性编程…

AlexNet 深度学习奠基作之一(1)

2012年发表 imagenet 一百二十万的图片 1000个种类 cv 对于刷榜 是非常在意的 AlexNet 有六千万的参数,和65000的神经元 为了减少过拟合 我们使用了dropout 很work 很有效 而且 这篇文章没有conclusion 只有 讨论 当他发现 从5个层里面去掉一个 performence会降…

ubuntu设置core文件

长久不写代码,突然发现ubuntu当前运行目录下没有生成core文件,记录如下,避免下次重找。 1、首先开启core文件权限: ulimit -c 如果结果为0, 则表示没有开启,需要开启,如下: 通过u…

【Linux】Linux系统SSH客户端断开后保持进程继续运行配置方法;Python等脚本在终端后台运行的方法

0. 概述 在Linux系统中,通常我们在执行一些运行时间比较长的任务时,必须等待执行完毕才能断开SSH连接或关闭客户端软件,否则可能会导致执行中断。本文介绍几种保障程序在用户退出登录后持续运行的方法。 一、方法 1. 使用nohup执行 nohup…