gitlab runner下载安装注册+卸载 + shell指令没执行的问题

什么是gitlab CI/CD

简单来说,CI的作用是验证提交的代码是否符合规范。主要起到一个验证的作用。CD的作用主要是部署,测试环境的部署,正式环境的发布,制品的生成,镜像的构建。

Runner

gitlab里面的runner叫Gitlab-Runner,Gitlab-Runner是配合Gitlab-CI进行使用的。一般地,Gitlab里面的每一个工程都会定义一个属于这个工程的软件集成脚本,用来自动化地完成一些软件集成工作。当这个工程的仓库代码发生变动时,比如有人push了代码,GitLab就会将这个变动通知Gitlab-CI。这时Gitlab-CI会找出与这个工程相关联的Runner,并通知这些Runner把代码更新到本地并执行预定义好的执行脚本,所以,Gitlab-Runner就是一个用来执行软件集成脚本script的东西。

gitlab-runner的安装

runner10之后的版本(推荐使用)

GitLab Runner 10及其以上,可执行文件已重命名为gitlab-runner。(推荐使用)

方式1.安装特定版本的runner,没安装成功指定版本,就去官网找rpm下载地址了

先安装源

# 安装源
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

选择版本,使用yum安装

yum list gitlab-runner --showduplicates | sort -r 
export GITLAB_RUNNER_DISABLE_SKEL=true; sudo -E yum install gitlab-runner-10.0.0-1

如果第1种方式不可行,没有下载到指定版本,可用方式2(亲测有效)

方式2. 下载rpm包到本地

可以去gitlab runner rpm包版本下载地址下载rpm的安装包比如(gitlab-runner-12.5.0-1.x86_64),然后

rpm -ivh gitlab-runner-12.5.0-1.x86_64 安装即可

(12.5.0版本的)

# 先下载
wget --content-disposition https://packages.gitlab.com/runner/gitlab-runner/packages/ol/7/gitlab-runner-12.5.0-1.x86_64.rpm/download.rpm

#再安装
rpm -ivh gitlab-runner-12.5.0-1.x86_64.rpm

安装完gitlab runner后设置gitlab-runner的执行权限

# 设置执行权限,可能和你的路径不一样,自己which gitlab-runner看一下即可 
sudo chmod +x /usr/bin/gitlab-runner

重要::给gitlab-runner用户设置root权限

如果不给gitla-runner设置权限,很可能你的指令中由于权限不足导致构建失败!

sudo gitlab-runner uninstall # 删除gitlab-runner
gitlab-runner install --working-directory /home/gitlab-runner --user root   # 安装并设置--user(设置为root)
sudo service gitlab-runner restart  # 重启gitlab-runner
ps aux|grep gitlab-runner  # 查看当前runner用户

runner常用命令

gitlab-runner stop 停止服务
gitlab-runner start 启动服务
gitlab-runner restart 重启服务

gitlab-runner list #查看各个 Runner 的状态
gitlab-runner verify    #此命令检查注册的runner是否可以连接,但不验证GitLab服务是否正在使用runner。 --delete 删除
gitlab-runner register  #默认交互模式下使用,非交互模式添加 --non-interactive

gitlab-runner unregister   #该命令使用GitLab取消已注册的runner。
	#使用令牌注销
	gitlab-runner unregister --url http://gitlab.example.com/ --token t0k3n

	#使用名称注销(同名删除第一个)
	gitlab-runner unregister --name test-runner

	#注销所有
	gitlab-runner unregister --all-runners

注册一个runner

执行注册runner的命令(如果你是安装的gitlab-ci-multi-runner):sudo gitlab-ci-multi-runner register

执行注册runner的命令(如果你是安装的gitlab-runner):sudo gitlab-runner register

下面是示例

[root@admin ~]# sudo gitlab-runner register
Runtime platform                                    arch=amd64 os=linux pid=10449 revision=577f813d version=12.5.0
Running in system-mode.                            

// 输入项目gitlab-ci地址                                      
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://192.168.23.131/
// 输入token
Please enter the gitlab-ci token for this runner:
ueaZ-DkxQZ326bz1d51Z
// 描述
Please enter the gitlab-ci description for this runner:
[admin]: uat-demo
// 给runner起名字,可以多个,我是设置了两个, uat和test
Please enter the gitlab-ci tags for this runner (comma separated):
uat,test
Registering runner... succeeded                     runner=ueaZ-Dkx
// 选择执行器,使用的shell
Please enter the executor: docker, parallels, virtualbox, docker+machine, custom, docker-ssh, shell, ssh, docker-ssh+machine, kubernetes:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

如果看到这种,黑色三角,稍等一会儿就好了

gitlab runner下载安装注册+卸载 + shell指令没执行的问题_第1张图片

可以看到已经注册好了

gitlab runner下载安装注册+卸载 + shell指令没执行的问题_第2张图片

编写一个简单的.gitlab-ci.yml文件

测试使用,后面可以自己根据项目需求自定义

stages:
- build
- test
- deploy

build_maven:
  stage: build
  only:
  - /^uat-\d{8}$/
  tags:
  - uat
  script:
  - echo "build maven....."
  - echo "mvn clean"
  - echo "done"

test_springboot:
  stage: test
  only:
  - /^uat-\d{8}$/
  tags:
  - uat
  script:
  - echo "run java test....."
  - echo "java -test"
  - echo "done"

deploy_springboot:
  stage: deploy
  only:
  - /^uat-\d{8}$/
  tags:
  - uat
  script:
  - echo "deploy springboot...."
  - echo "run mvn install"
  - echo "done"

我们去项目下,打一个tag,触发流水线工作

gitlab runner下载安装注册+卸载 + shell指令没执行的问题_第3张图片

gitlab runner下载安装注册+卸载 + shell指令没执行的问题_第4张图片

gitlab runner下载安装注册+卸载 + shell指令没执行的问题_第5张图片

可以看到已经触发流水线工作了

gitlab runner下载安装注册+卸载 + shell指令没执行的问题_第6张图片

gitlab-runner的卸载

1. 停止gitlab-runner服务

gitlab-runner stop

2. 取消随机启动

chkconfig gitlab-runner off

3. 卸载gitlab-runner

gitlab-runner uninstall

3.1 rpm删除包

# 先查 rpm 包名
rpm -qa |grep gitlab-runner

# 如查询到
gitlab-runner-12.5.0-1.x86_64

# 直接卸载
sudo rpm -e gitlab-runner-12.5.0-1.x86_64

3.2假如rpm删不掉,告知删除的脚本文件已经被你提前干掉了,那么可以用此命令

除非是把所有的东西全删了,但是rpm还是能查到此包时再用这个命令

sudo rpm -e --noscripts gitlab-runner-12.5.0-1.x86_64

4. 清理文件

rm -rf /etc/gitlab-runner
rm -rf /usr/local/bin/gitlab-runner
rm -rf /usr/bin/gitlab-runner
rm -rf /etc/sudoers.d/gitlab-runner

5. 删除用户

userdel -r gitlab-runner

Runner注册的信息

那么,问题来了。注册好了的Runner的信息存放在哪儿了呢?

原来,Runner的信息是存放在一个配置文件里面的,配置文件的格式一般是.toml。这个配置文件的存放位置有以下几种情况:

在类Unix操作系统下(0.5.0之后版本)

如果是以**root用户**身份运行gitlab-runner register,**那么配置文件默认是/etc/gitlab-runner/config.toml**

如果是以**非root用户**身份运行gitlab-runner register,**那么配置文件默认是~/.gitlab-runner/config.toml**

在其他操作系统下以及0.5.0之前版本

配置文件默认在当前工作目录下./config.toml


gitlab ci/cd遇到的问题

1.版本问题

首先先把我的gitlab,gitlab-runner和git版本列出来

gitlab版本: v13.6.1

gitlab-runner版本: v9的版本

git版本:v1.8.3.1

大坑:由于gitlab-runner的版本太低,导致gitlab-runner拉取代码时,卡住不动了,然后直接全部pass通过了,shell脚本也没执行

执行到Checking out 40e95402 as uat-20220126…,然后就没有然后了…

解决方案:

直接卸载掉gitlab-runner,然后重新去下载了rpm的包

wget --content-disposition https://packages.gitlab.com/runner/gitlab-runner/packages/ol/7/gitlab-runner-12.5.0-1.x86_64.rpm/download.rpm

重新注册了runner,成功运行流水线,并且shell指令也都执行了

2.拉取代码失败

**一定要去检查gitlab-runner所在的服务器,是否安装了git!!!!**

3. 找不到mvn命令,或者提示权限不足

**给gitlab-runner用户设置root权限!!!!!**

你可能感兴趣的:(运维,gitlab,ci,gitlab,运维)