GitLab集成Runner详细版--及注意事项汇总【最佳实践】

一、背景

    看到网上很多用户提出的runner问题其实实际都不是问题,不过是因为对runner的一些细节不清楚导致了误解。本文不系统性的介绍GitLab-Runner,因为这类文章写得好的特别多,本文只汇总一些常几的问题/注意事项。旨在让新手少弯路。

二、环境

- GitLab 16.11.10   官方下载地址:GitLab 16.11.10

- GitLab-Runner 16.11.4  官方下载地址:GitLab-Runner 16.11.4

- Docker Desktop 4.37 容器图形化工具  官方下载地址:Docker Desktop 4.37

特别说明

Docker Desktop仅仅是Windows下镜像用,如有能爬楼的服务器或是非容器化安装可不安装此软件

三、GitLab准备

略。这里假设已经有了GitLab环境。本文只讲Runner集成。GitLab的安装下载包见上面的环境章节

四、GitLab-Runner下载

读者可根据实际需求选择rpm包或是镜像

- rpm包下载链接见上面的环境章节

- 镜像包请在服务器上下载或windows本地安装Docker Desktop下载

作者本文以rpm包为例

gitlab-runner-16.11.4-1.x86_64.rpm

五、GitLab-Runner安装/卸载

rpm命令安装,需要root用户,或其他用户sudo安装

rpm -ivh gitlab-runner-16.11.4-1.x86_64.rpm
# 卸载
yum erase gitlab-runner -y 

特别注意【扫雷】

1、这里安装完会自动创建gitlab-runner用户

2、即时修改gitlab-runner用户的密码,避免一些安全扫描问题,特别是对安全抓得比较严的公司

linux密码修改命令

passwd <用户名>

3、root安装(含sudo)和非root安装配置文件所在目录是不一样的

4、查看配置文件路径命令

gitlab-runner list

5、root安装的(含sudo)配置文件在/etc/gitlab-runner/config.toml

6、非root安装的配置文件在/home/gitlab-runner/.gitlab-runner/config.toml  

7、千万别故意用非root安装(故意踩雷),容易搞出问题

8、配置修改/etc/gitlab-runner/config.toml就行了

9、并发线程数量少了可改这个配置文件

10、有时侯没有流水线在跑,但流水线就是不动,重启一下gitlab-runner就行了(一般不会发生)

六、启动/停止

1、常规方式

sudo gitlab-runner start
sudo gitlab-runner stop

2、容器方式

bridge网络模式

## 创建网络
docker network create gitlabnetwork##  bridge网络模式
docker run -d --network gitlabnetwork --hostname=gitlab-runner1 \--name gitlab-runner --restart always \-v /app/gitlab-runner/config:/etc/gitlab-runner \-v /app/gitlab-runner/run/gitlab-runner.pid:/var/run/gitlab-runner.pid \gitlab/gitlab-runner:v16.11.4

- host主机模式

#  host主机模式 
docker run -d --network=host \--name gitlab-runner --restart always \-v /app/gitlab-runner/config:/etc/gitlab-runner \-v /app/gitlab-runner/run/gitlab-runner.pid:/var/run/gitlab-runner.pid \gitlab/gitlab-runner:v16.11.4

- 容器启/停

docker start ${containerID}
docker stop ${containerID}
docker restart ${containerID}

七、查看URL和注册令牌

1、共享Runner注册令牌

Admin area--》Overview--》Runners

2、群组Runner注册令牌

- 新建群组

- 进群组

设置->CICD->runner

3、专用Runner注册令牌

进入项目->设置->CICD->runner

八、GitLab-Runner注册

注册时直接指定非锁定、非保护,注册上后可在gitlab页面修改,以免后面不知所措

1、注册

注册什么类型的就使用对应类型令牌

sudo gitlab-runner register \
--non-interactive \
--executor "shell" \
--url "http://10.130.***.**:8082/" \
--registration-token "S_AfM7r*****jFyb5GSQ" \
--description "shared-runner2" \
--tag-list "check,build,deploy,test" \
--run-untagged "true" \
--locked-"false"  \
--access-level "not protected"

2、效果

注册不同类型的查看页面不一样,同查看URL和注册令牌章节的节面,这里只列出共享类型页面

九、最佳实践

1、介绍

通过流水线实现check、test、package、publish

- check  自动化静态代码质量扫描(应用已集成pmd代码质量检查插件)

- test  自动化动态代码质量扫描、自动化测试(应用所有服务接口都有对应的单元测试方法)

- package  自动打包(跳过测试,避免重复测试,跳过doc、source等不必要的处理提高效率)

- publish  自动发布,可配置规则,自动或手动设定参数决定本次流水线是否发布

2、界面

3、.gitlab-ci.yml配置文件位置及内容demo

创建一个名为“.gitlab-ci.yml”的文件放在工程的根目录

自动化配置文件内容

stages:- check- test- package- publishbefore_script:- export CENTER_NAME=$(echo $CI_PROJECT_NAME| cut -d'-' -f 1)- export TARGET_RPC_SERVICE="$CENTER_NAME-***-service"- export TARGET_WEB_API="$CENTER_NAME-web-api"- export JAVA_HOME=/usr/lib/jvm/jdk-17-oracle-x64- export MAVEN_HOME=/app/maven/maven3.8.8- export PATH=$JAVA_HOME/bin:$PATH- export MAVEN_OPTS="-server -Xms256m -Xmx512m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m -Dfile.encoding=UTF-8 -Djava.net.preferIPv4Stack=true "- export ARCHIVE_HOME=/data2/app/deploy/boot- export APP_HOME=/data2/app- export CI_PROJECT_STATUS=develop- export RUNNER_IP=$(ip addr | awk '/inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g" , $2)}' | awk 'NR==1')after_script:- env > current_env.logvariables:MAVEN_CLI_OPTS: " --batch-mode"MAVEN_CLI_PROMQL_OPTS: " --batch-mode -Dgroups=promql"MAVEN_CLI_ES_HLOG_CSB_OPTS: " --batch-mode -Dgroups=hlog"MAVEN_CLI_ES_SW_OPTS: " --batch-mode -Dgroups=sw"MAVEN_CLI_SKIP_TEST_OPTS: "$MAVEN_CLI_OPTS -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dmaven.source.skip=true "checking:stage: checkscript:- echo mvn $MAVEN_CLI_OPTS pmd:check- mvn $MAVEN_CLI_OPTS pmd:check -s "$MAVEN_HOME/conf/settings.xml"- find . -type f -name pmd.xml -exec cat {} \+except:variables:- $CI_PROJECT_STATUS == "init"tags:- checktest:stage: testscript:- echo mvn --batch-mode -Dgroups=ci test- mvn --batch-mode -Dspring.profiles.active=ci -Dlog.path=/app/log/smet -Dprofile=ci -Dgroup=CI -Dnacos-addr=10.130.***.**:18848 -Dnacos-password=nacos2024ip92 -Dserver.port=8004 -Ddubbo.protocol.port=50052 -Ddubbo.application.qos-port=22223 -s "$MAVEN_HOME/conf/settings.xml" testtags:- testpackage:stage: packagescript:- mvn $MAVEN_CLI_SKIP_TEST_OPTS  -s "$MAVEN_HOME/conf/settings2.xml"  package- sudo find . -type f -name '*.jar.original' -exec sh -c "/bin/cp -rf \"{}\" /app/saashealth/" \;- sudo chown tomcat.tomcat /app/****health/*.jaronly:- mastertags:- packagepublish:stage: publishscript:- echo 发布开始...- echo 文件拷贝和停服务...- sudo su - tomcat -s /app/****health/publish.sh- echo 文件拷贝停服务完成!- echo 发布完成!only:- mastertags:- publish

4、自带配置检查工具

 - 检查工具入口

- 校验页面

十、GitLabRunner 类型重点说明

这里旨在给各位读者扫雷---很重要

shared : 运行整个平台项目的作业(gitlab)   -- 共享类

group: 运行特定group下的所有项目的作业(group) -- 分组类

specific: 运行指定的项目作业(project) -- 专享类

locked: 无法运行项目作业(specific的就会带locked标签,表示无法运行其他项目作业)

paused: 不会运行作业(手动停了就是pause,点runner数据量后面的两竖按钮)

十一、【扫雷】总结

1、root用户安装gitlab-runner

2、就算作业类型(shared、group、specific)关联了一般也会通过tag触发(匹配才触发)

3、注意配置文件位置,别因多次安装搞混淆了

4、及时修改gitlab-runner用户的默认密码

5、一定要在项目根目录创建一个名为“.gitlab-ci.yml”的文件才能看到效果

6、.gitlab-ci.yml需要语法正确,使用自带页面工具校验

7、本文着重实践。

8、想学理论的话网上这篇帖子讲得比较全面:云原生之GitLab集成Runner

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

指针 const 的组合

1、首先来了解一下常量 const int num 5&#xff1b; 那么num的值是5&#xff0c; num的值不可修改 2、来了解一下指针 int value 5; int* p &value; 我喜欢吧指针和类型放一起&#xff0c;来强调p是一个指针类型&#xff0c; 而赋值的时候就得赋值一个int类型的地址…

《C++11》各种初始化方式的详细列举与对比

在 C 中&#xff0c;初始化对象的方式多种多样。随着 C 标准的演进&#xff0c;特别是 C11 的引入&#xff0c;初始化方式得到了显著的扩展和改进。本文将详细列举 C 中的各种初始化方式&#xff0c;并对它们进行对比&#xff0c;帮助开发者更好地理解和应用这些特性。 1. C98…

前端小案例——520表白信封

前言&#xff1a;我们在学习完了HTML和CSS之后&#xff0c;就会想着使用这两个东西去做一些小案例&#xff0c;不过又没有什么好的案例让我们去练手&#xff0c;本篇文章就提供里一个案例——520表白信封 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主…

【Vim Masterclass 笔记05】第 4 章:Vim 的帮助系统与同步练习(L14+L15+L16)

文章目录 Section 4&#xff1a;The Vim Help System&#xff08;Vim 帮助系统&#xff09;S04L14 Getting Help1 打开帮助系统2 退出帮助系统3 查看具体命令的帮助文档4 查看帮助文档中的主题5 帮助文档间的上翻、下翻6 关于 linewise7 查看光标所在术语名词的帮助文档8 关于退…

10-C语言项目池

C语言项目池 《个人通讯录》 《火车订票系统》 管理员用户1录入火车票信息区间查询/购票2显示火车票信息打印购票信息3查询火车票信息退票4修改火车票信息5添加火车票信息 《学生学籍管理系统》 1录入学生信息2添加学生信息3显示学生信息4查找学生信息5删除学生信息6修改学…

Android 绘制学习总结

1、刷新率介绍 我们先来理一下基本的概念&#xff1a; 1、60 fps 的意思是说&#xff0c;画面每秒更新 60 次 2、这 60 次更新&#xff0c;是要均匀更新的&#xff0c;不是说一会快&#xff0c;一会慢&#xff0c;那样视觉上也会觉得不流畅 3、每秒 60 次&#xff0c;也就是 1…

每日一题:BM1 反转链表

文章目录 [toc]问题描述数据范围示例 C代码实现使用栈实现&#xff08;不符合要求&#xff0c;仅作为思路&#xff09; 解题思路 - 原地反转链表步骤 C语言代码实现 以前只用过C刷过代码题目&#xff0c;现在试着用C语言刷下 问题描述 给定一个单链表的头结点 pHead&#xff…

78、使用爱芯派2_AX630C开发板 3.2T高有效算力 低功耗 支持AI-ISP真黑光实验

基本思想:使用爱心元智最新的版本开发板进行实验 AX630C、AX620Q 都是 620E 这一代 一、参考这个官方教程,先把代码在本地交叉编译完成 https://github.com/AXERA-TECH/ax620e_bsp_sdk 然后在拷贝到620c设备上 root@ax630c:~/ax620e_bsp_sdk/msp/out/arm64_glibc/bin# ./…

【Redis经典面试题七】Redis的事务机制是怎样的?

目录 一、Redis的事务机制 二、什么是Redis的Pipeline&#xff1f;和事务有什么区别&#xff1f; 三、Redis的事务和Lua之间有哪些区别&#xff1f; 3.1 原子性保证 3.2 交互次数 3.3 前后依赖 3.4 流程编排 四、为什么Lua脚本可以保证原子性&#xff1f; 五、为什么R…

企业网络性能监控

什么是网络性能监控 网络性能监控&#xff08;NPM&#xff09;是指对计算机网络的性能进行持续测量、分析和管理的过程&#xff0c;通过监控流量、延迟、数据包丢失、带宽利用率和正常运行时间等关键指标&#xff0c;确保网络高效、安全地运行&#xff0c;并将停机时间降至最低…

【开源】创建自动签到系统—QD框架

1. 介绍 QD是一个 基于 HAR 编辑器和 Tornado 服务端的 HTTP 定时任务自动执行 Web 框架。 主要通过抓包获取到HAR来制作任务模板&#xff0c;从而实现异步响应和发起HTTP请求 2. 需要环境 2.1 硬件需求 CPU&#xff1a;至少1核 内存&#xff1a;推荐 ≥ 1G 硬盘&#xff1a;推…

SUB输入5V升压充电16.8V芯片HU5912

HU5912芯片&#xff0c;作为航誉微电子有限公司推出的一款高性能升压充电管理IC&#xff0c;自其面世以来&#xff0c;便以其出色的性能和广泛的应用领域&#xff0c;受到了业界的高度关注和赞誉。本文将详细介绍HU5912芯片的技术特点、应用优势、市场定位以及其在各类电子设备…

练习(继承)

大家好&#xff0c;今天我们写几道题来巩固一下我们所学的知识&#xff0c;以便我们更好的学习新内容。 方法重写&#xff1a; 继承&#xff1a; 注&#xff1a;java中只能继承一个类 那么今天分享就到这里&#xff0c;谢谢大家&#xff01;&#xff01;&#xff01;

计算机网络 (28)虚拟专用网VPN

前言 虚拟专用网络&#xff08;VPN&#xff09;是一种在公共网络上建立私有网络连接的技术&#xff0c;它允许远程用户通过加密通道访问内部网络资源&#xff0c;实现远程办公和安全通信。 一、基本概念 定义&#xff1a;VPN是一种通过公共网络&#xff08;如互联网&#xff09…

04-spring-理-ApplicationContext的实现

实现1&#xff1a;ClassPathXmlApplicationContext 1、内部维护了 DefaultListableBeanFactory 2、通过XmlBeanDefinitionReader 读取配置文件将结果加入到 DefaultListableBeanFactory 3、没有维护 bean后置处理器 &#xff0c;可以通过在xml配置 <context:annotation-c…

STM32的LED点亮教程:使用HAL库与Proteus仿真

学习目标&#xff1a;掌握使用STM32 HAL库点亮LED灯&#xff0c;并通过Proteus进行仿真验证&#xff01; 建立HAL库标准工程 1.新建工程文件夹 新建工程文件夹建议路径尽量为中文。建立文件夹的目的为了更好分类去管理项目工程中需要的各类工程文件。 首先需要在某个位置建立工…

回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测

回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测 目录 回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 一、极限学习机&#xff08;ELM&#xff09; 极限学习机是一种单层前馈神经网络&#xff0c;具有训练速…

实现AVL树

目录 AVL树概念 AVL树结构 AVL树插入 LL型 - 右单旋 RR型 - 左单旋 LR型 - 左右双旋 RL型 - 右左双旋 插入代码实现 AVL树测试 附AVL树实现完整代码 AVL树概念 前面的博客介绍了搜索二叉树&#xff0c;二叉搜索树-CSDN博客 在某些特定的情况下&#xff0c;⼆叉搜索树…

unity学习11:地图相关的一些基础

目录 1 需要从 unity的 Asset Store 下载资源 1.1 下载资源 1.2 然后可以从 package Manager 里选择下载好的包&#xff0c;import到项目里 2 创建地形 2.1 创建地形 2.2 地形 Terrain大小 2.3 各种网格的尺寸大小 2.4 比较这个地形尺寸和创建的其他物体的大小对比 3 …

【vue】晋升路线图、蛇形进度条

一、效果图&#xff08;参考链接&#xff09; 代码实现 <template><div class"only-content"><h1 class"text-center my-3">讲师晋升路线</h1><!--时间轴线显示--><div class"time-line"><div class&qu…