同一个 gitlab-ci 文件能使用多个 runner 吗?
2023-02-18 16:39:39 时间
在 Gitlab CI 中,Runner 是 Job 的执行器, 也就是说 Job 的运行环境, 就是 Runner 的环境。
那么, 怎么将同一个 gitlab ci
中的 Job
运行在不同的 Runner 上呢?
例如, 根据 操作系统 区分, job1
运行在 windows
上, job2
运行在 linux
上, 诸如此类。
使用 TAG 指定 runner
其实很简单, gitlab ci
中, 可以通过指定 tags
来设定运行条件, 满足了 tag
才能被执行。
而 ci
中的 tags
和可以和 runner
中的 tags
进行匹配
.gitlab-ci.yml
.gitlab-ci.yml
文件如下, 定义了一个 tar
stage , 下面有 三个 job
分别对应 三个 runner 的编译和打包环境。
注意, 这里使用的是 Runner 的
TAG
,不是 Runner 的名字
stages:
- tar
# .gitlab-ci.yml
tar.ivs:
stage: tar
script:
- /bin/bash ivs-1800-matrix-build.sh
tags:
- neuron-arm64 # 执行 ivs 的runner
tar.3519a:
stage: tar
script:
- /bin/bash hisi-3519a-build.sh
tags:
- 3519A # 执行 3519a 的 runner
tar.atlas:
stage: tar
script:
- /bin/bash atlas-500-matrix-build.sh
tags:
- edge # 执行 atlas 的 runner
选择 runner
在 Project CICD 配置中, 选中需要的 三个 runner。
注意红色箭头中的 TAG
标记, 也就是上面 gitlab-ci.yml
中的 tags
值。
执行结果
CI 正常触发后, 可以看到三个 JOB 正常执行, 并且是在对应选择的 runner 上。
相关文章
- [Go] 使用go mod安装beego
- [Go] linux下安装go1.16
- [GO项目]开源免费在线客服系统-真正免费开源-GOFLY0.2.9发布-极简强大Go语言开发网页客服
- [Go] tcp服务下的数据传递
- [Go] gocron源码阅读-go语言web框架Macaron
- [Go] gocron源码阅读-通过第三方cli包实现命令行参数获取和管理
- [Go]Golang 1.16 中 Modules的主要变化更新
- [Go] gocron源码阅读-flag包实现命令行参数获取
- [Go] gocron源码阅读-groutine与channel应用到信号捕获
- [Go] gocron源码阅读-空接口类型interface{}
- [GO]mysql中支持表情emoji字符的几个修改点
- [Go]实现GO语言中的base64_decode 解决非法字符问题
- [Go] gocron源码阅读-go语言中的切片接口和类型综合
- [Go] gocron源码阅读-go语言中的切片和类型综合
- [Go] gocron源码阅读-go语言的结构体
- [Go] vscode配置Go环境
- [日常] gocron源码阅读-使用go mod管理依赖源码启动gocron
- [日常] gocron源码阅读-go语言的变量
- [GO]使用go-smtp发送邮件通知
- [Linux]gocron定时任务平台的部署