GitLab-Runner安装
GitLab Runner是一个用go语言编写的开源项目,它是作为Gitlab的功能扩展,也就是在代码版本管理之外提供了CICD的功能。它能够和Gitlab无缝集成,但是选择安装版本最好和Gitlab保持一致,避免出现不兼容的情况。
1. CICD介绍
CI/CD指的是持续集成(Continuous Integration)和持续交付/持续部署(Continuous Delivery/Continuous Deployment),在软件开发和运维中,CI/CD是一套旨在提高开发效率和软件质量的实践和方法,而流水线是实现持续集成和持续交付(CI/CD)的一种具体有效方案。
- CI: 开发人员频繁地(通常是每天多次)将代码集成到主分支。持续集成会触发自动化构建和测试,确保新代码与现有代码的兼容性。
- CD: 在持续集成的基础上,持续交付确保代码可随时准备好进行生产部署。这意味着每次集成后的构建都通过了所有自动化测试,保证了软件的稳定性。持续部署是持续交付的进一步延伸,代码在通过所有测试后会自动部署到生产环境。
- 流水线(Pipeline)是一种自动化过程,包括:构建(Build)、测试(Test)、部署(Deploy)、监控(Monitor)等。
使用GitLab的CICD功能,可以快速实现自动部署,完成运行。
2. 安装GitLab-Runner
建议将GitLab-Runner和GitLab放在不同机器上运行,否则可能不能正常运行,另外GitLab支持连接多个GitLab-Runner,可以按照实际需要安装Gitlab-Runner, 提前需要配置关闭防火墙。
2.1 下载GitLab-Runner
访问gitlab-runner的release网址, 选择package: RPM amd64即可开始下载: 上传安装包到服务器
[jack@hadoop103 software]$ ll
总用量 1106800
-rw-rw-r--. 1 jack jack 495831721 8月 9 21:54 gitlab-runner_amd64.rpm
-rw-rw-r--. 1 jack jack 141887242 8月 3 21:04 jdk-8u391-linux-x64.tar.gz
[jack@hadoop103 software]$ sudo rpm -ivh gitlab-runner_amd64.rpm
警告:gitlab-runner_amd64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID 6ba75a4e: NOKEY
错误:依赖检测失败:
git 被 gitlab-runner-15.11.1.x86_64 需要
2.2 安装Git
gitlab-runner需要Git,并且gitlab-runner版本15以上依赖的git版本为2.37以上,CentOS 7用自带的源安装Git版本比较老:
[jack@hadoop103 software]$ git --version
git version 1.8.3.1
在安装新版本前,我们需要删除旧版本:
[jack@hadoop103 software]$ sudo yum -y remove git
通过第三方源安装Git:
[jack@hadoop103 software]$ sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo-1.10-1.x86_64.rpm
## 安装 Git 2.x
[jack@hadoop103 software]$ sudo yum install git
查看安装的Git版本:
[jack@hadoop103 software]$ git --version
git version 2.43.0
2.3 再次安装Gitlab-Runner
[jack@hadoop103 software]$ sudo rpm -ivh gitlab-runner_amd64.rpm
3. 注册Gitlab-Runner
安装Gitlab-Runner完成之后,并不能直接使用,需要提前向Gitlab注册Gitlab-Runner节点。
3.1 获取注册token
使用root账号登录Gitlab,点击管理员,选择CICD菜单-Runner:
点击Register an instance runner按钮: 复制注册的Token,在Runner所在机器执行命令:
[jack@hadoop103 software]$ [jack@hadoop103 software]$ sudo gitlab-runner register --url "http://hadoop102" --registration-token "jM75op7FsKyiX4s7hH6U" --description "ci-runner"
Runtime platform arch=amd64 os=linux pid=118930 revision=0d8a024e version=15.11.1
Running in system-mode.
Enter the GitLab instance URL (for example, https://gitlab.com/):
[http://hadoop102]:
Enter the registration token:
[jM75op7FsKyiX4s7hH6U]:
Enter a description for the runner:
[ci-runner]:
Enter tags for the runner (comma-separated):
Enter optional maintenance note for the runner:
WARNING: Support for registration tokens and runner parameters in the 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens. For more information, see https://gitlab.com/gitlab-org/gitlab/-/issues/380872
Registering runner... succeeded runner=jM75op7F
Enter an executor: docker+machine, kubernetes, custom, docker, docker-windows, parallels, docker-autoscaler, instance, docker-ssh, shell, ssh, virtualbox, docker-ssh+machine:
# 选择运行模式 -> 使用最简单的shell
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"
默认注册采用的交互式,需要交互填写信息,填写完毕即可注册完成。
Gitlab-Runner的类型:
- shared共享类型,运行整个平台项目的作业(gitlab)
- group项目组类型,运行特定group下的所有项目的作业(group)
- specific项目类型,运行指定的项目作业(project)
这里我们是在管理中心配置的Runner,它是shared共享类型的Runner。如果组长账号登录,在群组中配置Runner,那该Runner只能负责允许该群组的任务。
回到Gitlab页面,可以看到runner已经注册成功:
4. 搭建构建编译环境
Gitlab-Runner进行编译打包需要额外的语言环境,比如Java代码仓库的编译需要Java和Maven。
比如配置Maven,访问Apache Maven官网,下载安装包: 上传到hadoop103服务器/opt/software上,并进行解压缩:
[jack@hadoop103 software]$ ll
总用量 630880
-rw-rw-r--. 1 jack jack 8296049 8月 4 02:58 apache-maven-3.8.8-bin.tar.gz
-rw-rw-r--. 1 jack jack 495831721 8月 3 22:21 gitlab-runner_amd64.rpm
-rw-rw-r--. 1 jack jack 141887242 8月 3 21:04 jdk-8u391-linux-x64.tar.gz
[jack@hadoop103 software]$ tar -xvf apache-maven-3.8.8-bin.tar.gz -C ../module/
配置maven环境:
[jack@hadoop103 bin]$ sudo vim /etc/profile.d/maven_env.sh
## 添加以下内容
export MAVEN_HOME=/opt/module/apache-maven-3.8.8
export PATH=$PATH:$MAVEN_HOME/bin
## 配置生效
[jack@hadoop103 bin]$ source /etc/profile
验证maven安装:
[jack@hadoop103 bin]$ mvn -v
Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
Maven home: /opt/module/apache-maven-3.8.8
Java version: 1.8.0_391, vendor: Oracle Corporation, runtime: /opt/module/jdk1.8.0_391/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.119.1.el7.x86_64", arch: "amd64", family: "unix"
编辑/opt/module/apache-maven-3.8.8/conf/settings.xml文件,配置maven的中央仓库和本地库位置:
在55行的位置插入设置本地库的位置
<localRepository>/opt/module/maven_repo</localRepository>
在159行位置插入设置中央仓库
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
创建/opt/module/maven_repo文件夹:
[jack@hadoop102 conf]$ mkdir -p /opt/module/maven_repo