GitLab-Runner安装
1.前言
刚刚熟悉了如何使用AzureDevops,但是遇到收费的问题,又想用这种持续集成和交付的工具,辗转又来到了GitLab。微软的东西,就有一个好处,就是会有图型界面,连Pipeline也有Web界面可以简简单单的配置完成。但是到了GitLab这里,就没有这么幸运了,任何一条任务,都要写配置文件进行配置。对于配置文件的学习,又是一个不小的成本。虽然AzureDevops也支持yml格式配置文件,但是既然有控制台,谁还会去花时间学习配置文件如何编写呢?
第一个问题就是,A机器安装了GitLab服务器,保存了仓库,B机器呢是要进行代码部署的机器,两者如何进行通信呢?类比于Azure Devops,B机器会安装一个代理软件之类的东西。安装的时候,AzureDevops也给了命令行,可以直接拷贝然后安装就可以了。但是GitLab好像没有这么方便了。
2.GitLabRunner
一台电脑上可以安装(其实叫注册更贴切)一个Runner,也可以安装(其实叫注册更贴切)多个Runner。可以安装一个通用的Runner,也可以安装一个特定于某个项目的Runner。参考文章中说:
(1) 什么情况下需要注册Shared Runner?
比如,GitLab上面所有的工程都有可能需要在公司的服务器上进行编译、测试、部署等工作,这个时候注册一个Shared Runner供所有工程使用就很合适。
(2) 什么情况下需要注册Specific Runner?
比如,我可能需要在我个人的电脑或者服务器上自动构建我参与的某个工程,这个时候注册一个Specific Runner就很合适。
(3) 什么情况下需要在同一台机器上注册多个Runner?
比如,我是GitLab的普通用户,没有管理员权限,我同时参与多个项目,那我就需要为我的所有项目都注册一个Specific Runner,这个时候就需要在同一台机器上注册多个Runner。
1.gitlab CI && Runners使用
3.windows下安装GitLab Runner
这个就比较厉害了,类似于AzureDevops的在代理服务器或者是部署服务器上安装的代理软件。在哪台机器上安装了它,它就可以和安装GitLab的主服务器之间进行通信,并执行主服务器上定义的pipeline任务。摘自官网的描述,在windows上安装gitlab-runner。
(1) 在系统上创建一个文件夹,比如:C:\GitLab-Runner
(2) 下载 x86 或者是 amd64 版本的二进制文件,将它放到刚刚创建的文件夹中。重新命名这个二进制文件为 gitlab-runner.exe。
(3) 打开命令提示符
(4) 在GitLab服务器上注册Runner
1 | ## 1.命令行运行: |
(5) 将Runner安装为windos服务,并开机启动。
1 | ## 安装 |
1.GitLab-CI 从安装到差点放弃
2.Gitlab自动部署之四:使用Gitlab-runner部署Gitlab的项目
3.Install GitLab Runner on Windows
4.Install GitLab Runner
5.Registering Runners
6.GitLab CI/CD 介绍和使用
7.gitlab-runner使用docker执行器,无法获取本地镜像。
8.Gitlab自动部署之二:安装GITLAB-RUNNER
3.Executors执行器
gitlab-runner的执行器主要分为SSH、Shell、Parallels、VirtualBox、Docker等很多种。
4.CentOS 8 安装GitLab-Runner
(1) 手动安装gitlab-runner,需要下载指定版本的runner,可以在 官网 查看有哪些可用的 runner 的名字,比如我这里安装gitlab-runner_amd64.rpm 的版本。还有一点,安装gitlab-runner之前,要先安装git,如果已经安装了 git 还是没有找到git,请看问题(3)
1 | ## 安装git依赖 |
(2) 注册gitlab-runner
1 | ## 注册gitlab runner |
注册成功:
刷新 gitlab 站点,可以查看已经注册成功了一个runner
【1】.centos 安装 Gitlab Runner
【2】.Install GitLab Runner using the official GitLab repositories
【3】.Gitlab自动部署之二:安装GITLAB-RUNNER 1.安装Gitlab-runner;2.注册Runner;3.创建项目与 .gitlab-ci.yml 文件;
【4】.Install GitLab Runner manually on GNU/Linux
【5】.如何在CentOS 8上安装Git
【6】.Executors
【7】.GitLab Runner Docs
(3) 删除注册信息
1 | ## 查看注册过的信息 |
(4) 卸载gitlab-runner
1 | ## 卸载服务 |
1.gitlab-ci持续集成 gitlab-runner权限不足的问题可改为www-data用户运行
2.GitLab Runner commands
3.Centos7 完全卸载gitlab
4.linux rpm问题:怎样查看rpm安装包的安装路径
5.查看RPM包默认的安装路径
问题
(1) 为 repo ‘runner_gitlab-runner’ 下载元数据失败
在CentOS8上安装gitlab-runner,执行命令:curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash 时出现问题,无法下载元数据。
看来使用仓库自动安装gitlab-runner 是不行了,只能手动安装了。
(2) gitlab-runner-linux-amd64:不是 rpm 软件包 (或者没有 manifest)
无法自动安装,只能手动安装了,手动安装的时候,执行:curl -LJO https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm64 命令下载rpm包,结果执行:rpm -i gitlab-runner-linux-amd64.rpm 安装时,又提示不是rpm软件包。
问题是我下载错误了,应该下载 rpm/gitlab-runner_amd64.rpm (https://gitlab-runner-downloads.s3.amazonaws.com/latest/rpm/gitlab-runner_amd64.rpm) 而不是上面的那一个 binaries/gitlab-runner-linux-arm64 二进制的文件。
1.gitlab-runner-12.9.0-1.x86_64.rpm
2.no rpm package/repo for centos7 arm
3.No package gitlab-runner available
(3) 已经安装了git,但是找不到git-runner还是提示没有git
我的系统了已经安装了git(编译安装),使用 git 命令查看,有相关的软件,但是还是无法被git-runner识别,应该是依赖的问题。意思就是手动编译安装的git,没有在系统的依赖库中注入信息,那么git-runner在检查依赖的时候,就出现了找不到相关的git依赖了。
加上参数–test,就可以检查依赖关系
我发现了这个gitlab-runner值依赖git,既然是依赖的问题,但是又没法解决,那只能强行忽略依赖进行安装了。
1 | ## 测试安装及依赖 |
1.解决RPM包依赖的几种方法
2.Linux RPM 命令参数使用详解 查看 rpm包依赖性
3.编译安装详解和rpm和yum
4.git源码编译安装
5.GitLab持续集成–配置Runner
6.CentOS7编译安装最新版本Git
(4) Registering runner… failed runner=9FH5nFzd status=couldn’t execute POST against http://xxxx/api/v4/runners:
执行注册的时候,出现了问题。无法连接主机,但是通过浏览器访问,是可以访问到主机的gitlab地址的。
奇怪的问题,我将外网的地址映射端口由8080改为8012就可以了。意思就是说,我外网ip地址为202.202.202.202,通过在ASUS(华硕)路由器上进行端口映射,将8080端口映射到内容192.168.1.60:80,从外网访问202.202.202.202:8080及可以访问到内容192.168.1.60:80,问题就出现在这个8080端口映射。我将8080映射,改为8012映射,便可以通过注册了。显然问题就出现在ASUS路由器的8080端口上了。
1.Registering runners - status=couldn’t execute POST against….
2.如何使用 ASUSWRT 设置 port forwarding?
3.Simple Instructions to Help Setup a Port Forward on the Asus RT-AC68U Router
5.修改执行用户
本来我想着要设置 gitlab-runner 账号密码的,后来发现无效。
1 | # 查看执行用户 |
【1】.修改 gitlab-runner 的执行用户 安装 gitlab-runner 构建机默认会将用户设置为 gitlab-runner,该设置会导致.gitlab-ci.yml 脚本运行时出现一些权限问题。为了解决这些权限问题,杜老师将 gitlab-runner 构建机上的默认用户设置为 root。
【2】.Default password for gitlab-runner user account when using a shell executor
【3】.修改 gitlab runner 默认用户 (gitlab-runner) 为 root 修改 /etc/systemd/system/gitlab-runner.service
【4】.让gitlab-runner直接用root运行脚本…这样就不受权限的烦闹