当前位置: 首页 > news >正文

Gitlab Runner安装与配置

由于格式和图片解析问题,为了更好阅读体验可前往 阅读原文

本篇使用Docker安装Gitlab runner进行runner的安装和注册,其他方式请参考官方文档非Docker安装Gitlab runner

请确保runner版本和gitlab版本兼容以及docker相关版本兼容问题

下载镜像

docker pull gitlab/gitlab-runner:v14.6.0

创建挂载卷

mkdir -p /srv/gitlab-runner
cd /srv/gitlab-runner && mkdir config certs# 将gitlab的域名正式复制到 certs 中

运行runner

docker run -d --name gitlab-runner --restart always \-v /srv/gitlab-runner/config:/etc/gitlab-runner \-v /srv/gitlab-runner/certs:/etc/gitlab-runner/certs \-v /var/run/docker.sock:/var/run/docker.sock \-v /etc/hosts:/etc/hosts \gitlab/gitlab-runner:v14.6.0

如果你的gitlab使用的了本地域名和自签证书,这里进行域名和hosts进行挂载

注册runner

可以通过交互式和非交互式注册。注册runner需要runner的token,token用来连接gitlab和runner,这是官方Runner注册文档

注册token

Gitlab runner的注册token需要从gitlab中获取,token可以从具体项目中获取也可以从gitlab全局获取

如这里是web1项目的runner token

image-20230319175134576

你可以联系root账户创建group的runner或admin全局的runner

image-20230319175359461

交互式注册

# 方式1
docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:v14.6.0 register# 方式2
# 进入 gitlab-runner
docker exec -it gitlab-runner bash
> gitlab-runner -h
# 注册runner
> gitlab-runner register # 交互式注册看下方图

执行以上命令会进入runner镜像内部交互式进行注册

非交互式

# 如果你的gitlab使用http + ip形式
docker run --rm \-v /srv/gitlab-runner/config:/etc/gitlab-runner \-v /etc/hosts:/etc/hosts \gitlab/gitlab-runner:v14.6.0 register \--non-interactive \--executor "docker" \--docker-image alpine:latest \--url "http://192.168.10.10" \--registration-token "-_d2uxhfknTiFxm9oKs1" \--description "admin register runner" \--tag-list "admin" \--run-untagged="true" \--locked="false" # 如果你的gitlab使用https,需要进行证书认证
docker run --rm \-v /srv/gitlab-runner/config:/etc/gitlab-runner \-v /etc/hosts:/etc/hosts \gitlab/gitlab-runner:v14.6.0 register \--non-interactive \--executor "docker" \--docker-image alpine:latest \--url "https://gitlab.ihengshuai.com" \--registration-token "Gitlab Runner Token" \--description "testing docker-runner" \--tls-ca-file /etc/gitlab-runner/certs/gitlab.ihengshuai.com.crt \--tag-list "testing" \--run-untagged="true" \--locked="false"  

这里执行非交互命令:注册成功

➜ devops ~ docker run --rm \
>   -v /srv/gitlab-runner/config:/etc/gitlab-runner \
>   -v /etc/hosts:/etc/hosts \
>   gitlab/gitlab-runner:v14.6.0 register \
>   --non-interactive \
>   --executor "docker" \
>   --docker-image alpine:latest \
>   --url "http://192.168.10.10" \
>   --registration-token "-_d2uxhfknTiFxm9oKs1" \
>   --description "admin register runner" \
>   --tag-list "admin" \
>   --run-untagged="true" \
>   --locked="false"
Runtime platform                                    arch=arm64 os=linux pid=7 revision=5316d4ac version=14.6.0
Running in system-mode.Registering runner... succeeded                     runner=-_d2uxhf
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

参数说明

  • non-interactive:不需要交互
  • executor:runner执行器,有很多,这里选择docker
  • docker-image:runner基础镜像
  • url:指定gitlab的地址,根据gitlab的配置地址填写
  • registration-token:runner注册token,项目、admin、group的token都可以
  • description:runner相关描述
  • tag-list:runner的标签,可以指定多个,流水线运行时可以通过runner标签指定runner运行,如果你忘记填写,可以在注册后修改
  • tls-ca-file:如果你使用了https且使用了自签证书,需要指定证书使runner信任此证书( https://docs.gitlab.com/runner/install/docker.html#installing-trusted-ssl-server-certificates)
  • run-untagged:如果流水线的作业没指定tag也可以用此runner运行
  • locked:关闭锁定,默认情况下runner注册后都是锁定状态,不可以执行,需要在后台打开,这里直接注册时打开

配置文件

gitlab runner在注册后会生成对应的配置文件/srv/gitlab-runner/config/config.toml(挂载目录),容器位置在/etc/gitlab-runner/config.toml

# 同时可以运行几个runner
concurrent = 2# 检查间隔,3s内检查代码变动就会执行runner
check_interval = 3[session_server]session_timeout = 1800# 注册的runner,每注册一个,就会多一份 [[runners]] 配置
[[runners]]# runner 描述name = "testing docker-runner"# gitlab 地址url = "http://192.168.10.10"# 注册tokentoken = "iz1PoRca5ZD5gV1uydX4"# ssl证书位置tls-ca-file = "/srv/gitlab-runner/config/ssl/gitlab.ihengshuai.com.crt"# runner执行器executor = "docker"[runners.custom_build_dir][runners.cache][runners.cache.s3][runners.cache.gcs][runners.cache.azure][runners.docker]tls_verify = false# docker执行器的基础镜像image = "alpine:latest"privileged = falsedisable_entrypoint_overwrite = falseoom_kill_disable = falsedisable_cache = false# 镜像拉取策略,流水线过程中如果某个已经在本地了,就不会再拉取了,直接使用本地镜像pull_policy = "if-not-present"# runner缓存,在docker中使用docker执行器,需要映射宿主机的docker.socketvolumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]shm_size = 0# [[runners]]
# ....

配置重载

当你更改了runner的配置文件后,你需要重新加载配置文件,你可以使用一下方式:

docker restart gitlab-runner# 或进入容器
docker exec -it gitlab-runner bash
gitlab-runner restart

runner类型

根据runner的使用范围可以将其分为以下几类:

  • shared:共享runner,gitlab中的所有项目都可以使用
  • group:只有当前组才可以使用
  • specific:只有当前项目才可以使用

runner执行器

gitlab runner由很多可以在不同场景下运行构建的执行器

gitlab-runner-compare

Shell 执行器

Shell 是最简单的执行器。您的构建所需的所有必须依赖项都需要手动安装在极狐GitLab Runner 所安装的机器上。

虚拟机执行器(VirtualBox / Parallels)

这种类型的执行器允许您使用已经创建的虚拟机,它被克隆且用于运行构建。我们提供两个完整的系统虚拟化选项:VirtualBoxParallels。如果您想在不同操作系统上运行构建,它们很有用,因为它允许在 Windows、Linux、macOS 或 FreeBSD 上创建虚拟机,然后极狐GitLab Runner 连接虚拟机并在上面运行构建。它可以降低基础设施的成本。

Docker 执行器

https://docs.gitlab.com/runner/executors/docker.html

使用 Docker 是个很好的选择,因为它允许使用简单的依赖项管理(所有构建项目所需的依赖项都可以放到 Docker 镜像里)生成干净的构建环境。 Docker 执行器允许您很容易地使用依赖的服务, 例如 MySQL,创建构建环境。

Docker Machine 执行器

Docker Machine 是特殊版本的支持弹性伸缩的 Docker 执行器。 它类似正常的 Docker 执行器, 但由 Docker Machine 按需创建构建主机。

Kubernetes 执行器

Kubernetes 执行器允许您使用您构建现存的 Kubernetes 集群。 执行器会调用 Kubernetes 集群 API 并为每个极狐GitLab CI 作业创建新的 Pod(带有构建容器和服务容器)。

SSH 执行器

SSH 执行器是为执行器介绍完整性而添加进来的,它是所有执行器中最不受支持的一个。 它使极狐GitLab Runner 连接到外部服务器并运行构建。机构有一些使用 SSH 执行器的成功案例,但是通常我们推荐您使用其他类型的执行器。

自定义执行器

自定义执行器允许您指定您自己的执行环境。当极狐GitLab Runner 不提供执行器(例如,LXC 容器),您可以向极狐GitLab Runner 提供您自己的可执行文件,用以部署和清理任何您想使用的环境

由于格式和图片解析问题,为了更好阅读体验可前往 阅读原文

相关文章:

Gitlab Runner安装与配置

由于格式和图片解析问题,为了更好阅读体验可前往 阅读原文 本篇使用Docker安装Gitlab runner进行runner的安装和注册,其他方式请参考官方文档非Docker安装Gitlab runner 请确保runner版本和gitlab版本兼容以及docker相关版本兼容问题 下载镜像 docker p…...

如何有效防止和解决IP劫持问题

一、什么是IP劫持? IP劫持是一种攻击方式,攻击者通过伪装成合法的IP地址欺骗网络系统,从而非法获取数据或中断服务。这种攻击可以导致数据泄露、服务不可用等多种严重后果。 二、防范措施 启用SSL/TLS加密 SSL/TLS协议可以在客户端和服务器…...

2006-2020年各省人均水资源量数据

2006-2020年各省人均水资源量数据 1、时间:2006-2020年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区名称、年份、人均水资源量 4、范围:31省 5、指标解释:人均水资源量是指一个国家或地区在一定时期…...

C++基础入门(二)

目录 前言 一、重载 1.函数重载 2.运算符重载 二、构造函数 1.什么是构造函数 2.带参数的构造函数 3.使用初始化列表 4.this关键字 5.new关键字 三、析构函数 1.什么是析构函数 四、静态成员变量 1.静态成员的定义 2.静态成员变量的作用 五、继承 1.继承基本概…...

互联网架构困境:网络与信息安全

当我们说 TCP/IP 没有内置安全属性时,这到底是什么意思?事实上仔细观察身边的世界,很少有内置安全属性的,这源自于石器时代的野人们没有粮仓需要保护。 “互联网前身 ARPAnet 最初来自于美国国防部对等通信需求”,即使…...

HIVE技术

本文章基于黑马免费资料编写。 hive介绍 简介 hive架构 hive需要启动的配置 执行元数据库初始化命令 使用hive必须启动的服务 ./schematool -initSchema -dbType mysql -verbos启动 Hive 创建一个 hive 的日志文件夹 mkdir /export/server/hive/logs启动元数据管理服务 n…...

RustDesk ID更新脚本

RustDesk ID更新脚本 此PowerShell脚本自动更新RustDesk ID和密码,并将信息安全地存储在Bitwarden中。 特点 使用以下选项更新RustDesk ID: 使用系统主机名生成一个随机的9位数输入自定义值 为RustDesk生成新的随机密码将RustDesk ID和密码安全地存储…...

卷积神经网络的底层是傅里叶变换

1 卷积神经网络与傅里叶变换、希尔伯特空间坐标变换的关系_卷积神经网络与傅里页变换之间的关系-CSDN博客 从卷积到图像卷积再到卷积神经网络,到底卷了什么? 一维信号卷积:当前时刻之前的每一个时刻是如何对当前时刻产生影响的 图像卷积&…...

Bootstrap 下拉菜单

Bootstrap 下拉菜单 Bootstrap 是一个流行的前端框架,它提供了许多预构建的组件,其中之一就是下拉菜单。下拉菜单是一个交互式元素,允许用户从一系列选项中选择一个。在本篇文章中,我们将详细介绍如何在 Bootstrap 中创建和使用下…...

计算机组成原理(计算机系统3)--实验一:WinMIPS64模拟器实验

一、实验目标: 了解WinMIPS64的基本功能和作用; 熟悉MIPS指令、初步建立指令流水执行的感性认识; 掌握该工具的基本命令和操作,为流水线实验做准备。 二、实验内容 按照下面的实验步骤及说明,完成相关操作记录实验…...

读书笔记~管理修炼-风险性决策:学会缩小风险阈值

假设你的团队为了提升业绩,提出了两个解决方案:A方案是通过营销提升老产品的利润;B方案是通过研发开拓新产品,你会怎么选? 我们先来分析下,其实无论是A方案还是B方案,都会遇到市场难题&#xf…...

VIVADO FIFO (同步和异步) IP 核详细使用配置步骤

VIVADO FIFO (同步和异步) IP 核详细使用配置步骤 目录 前言 一、同步FIFO的使用 1、配置 2、仿真 二、异步FIFO的使用 1、配置 2、仿真 前言 在系统设计中,利用FIFO(first in first out)进行数据处理是再普遍不过的应用了&#xff0c…...

tcp粘包原理和解决

tcp粘包原理和解决 ​ 咱们先通过展示基于tcp 的cs端消息通信时的现象,带着问题再解释下面的tcp粘包问题。 一、原始代码 tcp 服务端代码 // socket_stick/server/main.gofunc process(conn net.Conn) {defer conn.Close()reader : bufio.NewReader(conn)var bu…...

C语言预处理艺术:编译前的魔法之旅

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文一、预处理的作用与流程&#xf…...

C++算法第十六天

本篇文章我们继续学习动态规划 第一题 题目链接 978. 最长湍流子数组 - 力扣(LeetCode) 题目解析 从上图可见其实有三个状态 代码原理 注意:我们在分析题目的时候分析出来的是三个状态,分别是上升、下降、平坦,但是…...

计算机网络 (45)动态主机配置协议DHCP

前言 计算机网络中的动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)是一种网络管理协议,主要用于自动分配IP地址和其他网络配置参数给连接到网络的设备。 一、基本概念 定义:DHCP是一种网络协议&#xf…...

归子莫的科技周刊#2:白天搬砖,夜里读诗

归子莫的科技周刊#2:白天搬砖,夜里读诗 本周刊开源,欢迎投稿。 刊期:2025.1.5 - 2025.1.11。原文地址。 封面图 下班在深圳看到的夕阳,能遇到是一种偶然的机会,能拍下更是一种幸运。 白天搬砖,…...

平滑算法 效果比较

目录 高斯平滑 效果对比 移动平均效果比较: 高斯平滑 效果对比 右边两个参数是1.5 2 代码: smooth_demo.py import numpy as np import cv2 from scipy.ndimage import gaussian_filter1ddef gaussian_smooth_array(arr, sigma):smoothed_arr = gaussian_filter1d(arr, s…...

Elasticsearch容器启动报错:AccessDeniedException[/usr/share/elasticsearch/data/nodes];

AccessDeniedException 表明 Elasticsearch 容器无法访问或写入数据目录 /usr/share/elasticsearch/data/nodes。这是一个权限问题。 问题原因: 1、宿主机目录权限不足:映射到容器的数据目录 /data/es/data 在宿主机上可能没有足够的权限供容器访问。 …...

【Linux系统编程】——深入理解 GCC/G++ 编译过程及常用选项详解

文章目录 1. GCC/G 编译过程预处理(Preprocessing)编译(Compilation)汇编(Assembly)连接(Linking) 静态链接与动态链接静态链接动态链接静态库和动态库 GCC 常用选项关于编译器的周边…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

OpenLayers 可视化之热力图

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

线程同步:确保多线程程序的安全与高效!

全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

uniapp中使用aixos 报错

问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...