简单来说,CI的作用是验证提交的代码是否符合规范。主要起到一个验证的作用。CD的作用主要是部署,测试环境的部署,正式环境的发布,制品的生成,镜像的构建。
gitlab里面的runner叫Gitlab-Runner,Gitlab-Runner是配合Gitlab-CI进行使用的。一般地,Gitlab里面的每一个工程都会定义一个属于这个工程的软件集成脚本,用来自动化地完成一些软件集成工作。当这个工程的仓库代码发生变动时,比如有人push了代码,GitLab就会将这个变动通知Gitlab-CI。这时Gitlab-CI会找出与这个工程相关联的Runner,并通知这些Runner把代码更新到本地并执行预定义好的执行脚本,所以,Gitlab-Runner就是一个用来执行软件集成脚本script的东西。
在GitLab Runner 10及其以上,可执行文件已重命名为gitlab-runner。(推荐使用)
先安装源
# 安装源
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(亲测有效)
可以去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
# 设置执行权限,可能和你的路径不一样,自己which gitlab-runner看一下即可
sudo chmod +x /usr/bin/gitlab-runner
如果不给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用户
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的命令(如果你是安装的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!
如果看到这种,黑色三角,稍等一会儿就好了
可以看到已经注册好了
测试使用,后面可以自己根据项目需求自定义
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"
可以看到已经触发流水线工作了
gitlab-runner stop
chkconfig gitlab-runner off
gitlab-runner uninstall
# 先查 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
除非是把所有的东西全删了,但是rpm还是能查到此包时再用这个命令
sudo rpm -e --noscripts gitlab-runner-12.5.0-1.x86_64
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
userdel -r gitlab-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,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指令也都执行了
**一定要去检查gitlab-runner所在的服务器,是否安装了git!!!!**
**给gitlab-runner用户设置root权限!!!!!**