今天在工作中遇到需要创建Linux debian的runner,官网参考link:Registering runners | GitLab
注册runner
下载
curl -LJO https://s3.amazonaws.com/gitlab-runner-downloads/main/deb/gitlab-runner_amd64.deb
安装
dpkg -i gitlab-runner_amd64.deb
注册
gitlab-runner register
安装自己的需求填写,本地执行选择shell,容器执行选择docker
设置git的长久用户
输入命令后,正常填写登录即会自动记录保存
git config --global credential.helper store
运行pipeline
gitlab-ci.yml
stages:
- build
build-sjob:
stage: build
script:
- echo "hello word"
tags:
- share # 刚刚创建的runner tag
运行:下面是我两个项目的pipeline跑的结果,都是报错
Running with gitlab-runner 17.1.0~pre.219.g13f6ac18 (13f6ac18)
2 on linux_share_runner XXXXX,.XXXXXXXXX,XXXXX
3Preparing the "shell" executor00:00
4Using Shell (bash) executor...
6Preparing environment00:00
7Running on peropero...
9Getting source from Git repository00:00
10mkdir: cannot create directory ‘/root’: Permission denied
12Cleaning up project directory and file based variables00:01
13rm: cannot remove '/root/gitlab_runner_build/JFgRAjyu/0/unity-packages/chongxi-test.tmp/CI_SERVER_TLS_CA_FILE': Permission denied
15ERROR: Job failed: exit status 1
Preparing the "shell" executor00:00
4Using Shell (bash) executor...
6Preparing environment00:00
7Running on peropero...
9Getting source from Git repository00:00
10mkdir: cannot create directory ‘/root’: Permission denied
12Uploading artifacts for failed job00:00
13mkdir: cannot create directory ‘/root’: Permission denied
15Cleaning up project directory and file based variables00:00
16rm: cannot remove '/root/gitlab_runner_build/JFgRAjyu/0/MpGroup/mp2.tmp/CI_SERVER_TLS_CA_FILE': Permission denied
解决错误
原因:因为安装gitlab-runner构建机时默认会将用户设置为:gitlab-runner,该设置会使编写.gitlab-ci.yml的脚本,操作带来一些权限上的问题。
解决方法:权限需要将gitlab-runner构建机上的默认用户设置为root。
1、查看gitlab-runner进程:ps aux|grep gitlab-runner 可以查看到gitlab-runner的工作目录和默认用户等一系列相关信息。
2、卸载gitlab-runner默认用户:sudo gitlab-runner uninstall
3、将用户设置为root:gitlab-runner install --working-directory /home/gitlab-runner --user root
4、重启服务:systemctl restart gitlab-runner.service
5、再次查看gitlab-runner进程:ps aux|grep gitlab-runner
重新运行pipeline就OK了