本文参考gitlab官方教程搭建CI
GitLab Runner是一款开源工具,用于在GitLab上运行CI/CD(持续集成/持续交付)作业。它可以在多个操作系统上安装和使用,并且可以在容器中运行或部署到Kubernetes集群中。可以通过以下三种方式安装GitLab Runner:
- 在容器中安装
- 手动下载二进制文件并安装
- 使用 rpm/deb 软件包仓库进行安装。
为了安全和性能的考虑,建议将运行GitLab Runner的服务器和托管GitLab代码的服务器分开。
安装完成后,需要向GitLab实例注册 runner,以便GitLab Runner可以运行在GitLab中定义的CI/CD作业。
一、安装
我们在这里使用第三种方式:通过软件包仓库安装。
1.添加官方仓库
Debian/Ubuntu/Mint 运行:
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
RHEL/CentOS/Fedora运行:
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
2. 安装最新版本的GitLab Runner
(如果需要安装指定版本,直接跳到下一步)
Debian/Ubuntu/Mint 运行:
sudo apt-get install gitlab-runner
RHEL/CentOS/Fedora运行:
sudo yum install gitlab-runner
备注:
- 从GitLab Runner 14.0开始,默认情况下禁用skel目录使用,以防止无此类文件或目录是CI作业失败。
- 在GitLab 14.7及更高版本中,兼容FIPS 140-2的GitLab Runner版本可用于RHEL发行版。可以使用gitlab runner fips作为软件包名称来安装此版本,而不是使用gitlab runner。
3. 安装指定版本的GitLab Runner
基于Deb的系统:
(我们使用指定版本)
apt-cache madison gitlab-runner
sudo apt-get install gitlab-runner=10.0.0
基于rpm的系统:
yum list gitlab-runner --showduplicates | sort -r
sudo yum install gitlab-runner-10.0.0-1
4. 查看gitlab-runner 版本的命令:
gitlab-runner -v
二、注册runner
- 在 GitLab Runner 15.0 中,注册请求格式发生了变化,如果你的 GitLab 版本低于 14.8,那么 Runner 就无法与 GitLab 通信。
- 在 GitLab 15.6 中,传递 Runner 注册令牌的能力已被弃用,并计划在 17.0 版本中删除,因此这是一个破坏性变化。GitLab 计划引入新的 GitLab Runner 令牌体系结构,以引入一种新的注册 Runner 的方法,并消除旧的 Runner 注册令牌。
所以,第一步在安装GitLab Runner 时,要注意版本是否能满足要求。
在 GitLab 中,注册 Runner 是将 Runner 与一个或多个 GitLab 服务器绑定的过程。你可以在同一台主机上注册多个 Runner,每个 Runner 都有不同的配置。为了注册 Runner,你需要运行一个特定的命令(即 register 命令),并提供必要的参数,例如 Runner 的名称、Runner 的标签、GitLab 服务器的 URL 和 Runner 的身份验证令牌等。
1. 注册前需要完成的工作
1.1 安装gitlab runner(不要与托管代码的服务器放在同一台机器),这个第一步已经完成
1.2 获取令牌(Token)
runner 有三个级别,分别对应不同的操作
- shared runner : 需要管理员转到GitLab管理区域,选择 Overview > Runners
- group runner:转到 CI/CD > Runners
- project runner:转到 Settings > CI/CD and expand the Runners section,位置如图:
2. 开始注册
(我们在这里只介绍Linux系统的操作步骤,其它系统请移步官方教程)
- 运行:
sudo gitlab-runner register
如果你使用的是代理服务器,那么你需要设置一个环境变量,以便在注册Runner时使用代理服务器。在这里,需要设置HTTP_PROXY和HTTPS_PROXY环境变量。这些变量包含代理服务器的URL和端口号
export HTTP_PROXY=http://yourproxyurl:3128
export HTTPS_PROXY=http://yourproxyurl:3128
sudo -E gitlab-runner register
-----------------------------------------------------
-----------------------------------------------------
export命令用于设置环境变量。
例如,如果你的代理服务器的URL是http://yourproxyurl:3128,那么你需要运行以下命令:
export HTTP_PROXY=http://yourproxyurl:3128
export HTTPS_PROXY=http://yourproxyurl:3128
这样设置环境变量后,你就可以在注册命令前面添加sudo -E选项来使用这些环境变量,例如:
sudo -E gitlab-runner register
问: 如何查看是否使用的是代理服务器?
答: 运行以下命令:
env | grep -i proxy
这个命令会列出所有以“proxy”开头的环境变量,包括HTTP_PROXY、HTTPS_PROXY等。如果你当前使用代理服务器,那么这些变量将显示代理服务器的URL和端口号。例如:
HTTP_PROXY=http://yourproxyurl:3128
HTTPS_PROXY=http://yourproxyurl:3128
如果这些变量没有被设置或者显示为空,那么你就没有使用代理服务器连接互联网。
-
输入gitlab的服务URL(也就是托管代码的gitlab服务器网址)
-
输入gitlab-ci的Toekn,获取方式参考上图
-
输入这个runner的描述信息
-
给这个gitlab-runner输入一个标记,这个tag非常重要。开始CI工作之前,我们可以选择使用哪个gitlabrunner编译代码。
-
是否运行在没有tag的build上面。在配置gitlab-ci的时候,会有很多job,每个job可以通过tags属性来选择runner。这里为true表示如果job没有配置tags,也执行
-
是否锁定runner到当前项目
-
选择执行器,gitlab-runner实现了很多执行器,可用在不同场景中运行构建。官方建议写docker,但是我们没用docker,这里选用Shell模式
三、gitlab-runner设置用户为root
第二步安装gitlab-runner是会默认安装一个gitlab-runner用户,CI运行期间,会出现一些权限不足的问题,所以将gitlab-runner的默认用户设为root
- 卸载掉gitlab-runner默认用户
sudo gitlab-runner uninstall
- 重新安装gitlab-runner并将用户设置为root
gitlab-runner install --working-directory /home/gitlab-runner --user root
- 重启gitlab-runner
sudo service gitlab-runner restart
第3步执行完后,gitlab-runner已经开始运行,不需要手动运行。
四、解决git push /git pull每次都需要输账号密码的问题
- 配置ssh
- 执行
git config --global credential.helper store
第2步执行完后,第一次git pull还是需要输密码,以后就不需要了