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

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.lryc.cn/news/515210.html

相关文章:

  • ARM发布Armv9.5架构:迈向更强性能与灵活性的新时代
  • 网络安全:路由技术
  • Vue3 子组件向父组件传递消息(Events)
  • 如何清理Docker的overlay2目录下的文件
  • 《Vue3实战教程》19:Vue3组件 v-model
  • 数字PWM直流调速系统设计(论文+源码)
  • Spring Boot日志处理
  • vue3+Echarts+ts实现甘特图
  • OpenCV相机标定与3D重建(41)从 3D 物点和它们对应的 2D 图像点估算初始相机内参矩阵函数initCameraMatrix2D()的使用
  • ELK日志平台搭建 (最新版)
  • 智能化人才招聘系统是怎样的?
  • 电脑主机后置音频插孔无声?还得Realtek高清晰音频管理器调教
  • 记一次音频无输出的解决方案
  • 初学stm32 --- FSMC驱动LCD屏
  • Scala_【4】流程控制
  • mysql带自动递增列的表删除数据后如何重置递增值
  • [CTF/网络安全] 攻防世界 simple_php 解题详析
  • Android 第三方框架:网络框架:OkHttp:源码分析:缓存
  • 大数据新视界 -- Hive 集群搭建与配置的最佳实践(2 - 16 - 13)
  • C# 设计模式(结构型模式):组合模式
  • Aloudata AIR | 逻辑数据平台的 NoETL 之道
  • js的一些处理
  • NLP 复习大纲
  • Kafka的rebalance机制
  • 【git】git stash相关指令
  • BLIP论文笔记
  • 设计模式-创建型设计模式总结
  • Java-多种方法实现多线程卖票
  • 嵌入式系统开发笔记112:通过有人云测试MQTT
  • C++ Latch 和 Barrier: 新手指南