Runner
Gitlab与Runner架构
理论上gitlab 与Runner不安装在同一台服务器上,我这里自己做测试就在同一台机器装了
另外需要注意的点,runner一般在docker上跑,或者K8S上跑,隔离性还好
云服务器上安装Runner
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash #下载网络源
yum list gitlab-runner --showduplicates |sort -r #查看runner包版本,尽量于gitlab一致
yum list all | grep gitlab #发现我gitlab版本低了
yum update gitlab-ce.x86_64 #对gitlab进行升级,这步要慎重,我的两核4G服务器更新的时候,内存,CPU爆满,没开swap,不过最后还是跑起来了
yum install -y gitlab-runner-14.5.0-1 #安装指定版本runner
Docker 安装Runner
直接起容器
sudo docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
进入容器添加认证
docker exec -it gitlab-runner /bin/bash
根据你的gitlab的CI/CD里的认证,更改下面的url 和registration-token,
gitlab-runner register \
--non-interactive \
--url "http://10.100.129.113:8090" \
--registration-token "S1Erstg39-nh1xQVMtBN" \
--executor "docker" \
--docker-image maven:latest \
--description "160runner " \
--tag-list "160" \
--run-untagged \
--locked="false"
重要参数说明:
url和token参考上图,在runner需要对接的gitlab中获得;
executor是runner中pipeline以什么方式运行,这里选择的是docker方式,其实还支持shell等其它方式。
docker-image是runner中pipelne以哪个image为基础来执行executor。
tag-list是runner的tag,在gitlab的project中关于ci的配置文件中会引用得到。
Runner注册成功后就会在gitlab的CI/CD页面看到下图中的红框内容:
如果出现灰色的runner说明runner虽然注册上来但是不可用,当gitlab与runner安装在同一台机器时就会出现这种情况,所以请尽量分开
在之前gitlab创建的edu-java项目中配置gitlab-ci
在项目根目录下添加.gitlab-ci.yml文件,gitlab-ci很强大,本质就是以yml的格式定义了一个pipeline,与jenkins存在功能重叠的部分,自己改的有问题,直接引用官方的。
.gitlab-ci.yml内容如下:
image: busybox:latest
before_script:
- echo "Before script section"
- echo "For example you might run an update here or install a build dependency"
- echo "Or perhaps you might print out some debugging details"
after_script:
- echo "After script section"
- echo "For example you might do some cleanup here"
build1:
stage: build
script:
- echo "Do your build here"
test1:
stage: test
script:
- echo "Do a test here"
- echo "For example run a test suite"
test2:
stage: test
script:
- echo "Do another parallel test here"
- echo "For example run a lint test"
deploy1:
stage: deploy
script:
- echo "Do your deploy here"
因为我项目克隆在了opt下所以在这个项目里创建.gitlab-ci.yml
配置user的权限
在项目的设定中的Repository Settings 中的保护分支:Protected branches
限制只有maintainers才可以push和merge项目的dev版本
测试验证
git clone git@github.com:yejingtao/runproject.git
cd /opt #进入到gitlab项目的家目录下
cp -r runproject/ edu-java/ #递归复制到edu-java项目下
cd /opt/edu-java/runproject #进入大佬的项目
vim .gitlab-ci.yml #根据上面写的修改成自己的
cp .gitlab-ci.yml /opt/edu-java #复制大佬的CI文件到自己的项目里
cd /opt/edu-java #准备push到自己的gitlab上
git add . # 添加当前目录下的所有文件和子目录加入到Git的索引中
git config --global user.email "alvin@qq.com"
git config --global user.name "dev01"
git commit -m "first commit"
git push #推送到gitlab的 edu-java项目
终端上提交或者在web界面更改 .gitlab-ci.yml都可以
在项目里就可以看到跑成功了
关于Gitlab Runners界面访问新添加的runner时报错
报错信息
fatal: unable to access 'http://vm-0-5-centos/edu-java/edu-java.git': Could not resolve host: vm-0-5-centos
当点击以上界面,网页会重定向到http://hostname/admin/runners/2
这个是无法识别的,你的runner运行job也会报错
需要你在Gitlab server更改配置文件
vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
gitlab:
## Web server settings (note: host is the FQDN, do not include http://)
# host: VM-0-5-centos #之前是主机名,所以会自动跳转到http://VM-0-5-centos/admin/runners/2
host: 你的IP或者域名
port: 80
https: false
gitlab-ctl restart #重启就可以正常访问了,job也能正常运行了
转载于:https://blog.csdn.net/yejingtao703/article/details/83065591