-
环境:
操作系统::CentOS8
gitlab版本:13.11.4
-
查看gitlab-runner版本
可以从https://packages.gitlab.com/app/runner/gitlab-runner/search找到与安装的gitlab版本相近的gitlab-runner版本以及安装命令等信息,我找到与13.11.4相近的是gitlab-runner-13.11.0-1.x86_64.rpm。
-
安装gitlab-runner
下载配置:
#Debian/Ubuntu/Mint:
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
#查看可以安装的列表
apt-cache madison gitlab-runner
#安装
sudo apt-get install gitlab-runner-13.11.0-1
#RHEL/CentOS/Fedora:
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
#查看可以安装的列表
yum list gitlab-runner --showduplicates | sort -r
#安装
sudo yum install gitlab-runner-13.11.0-1
-
注册
#执行注册
gitlab-runner register
注册时依次要求输入:
1、Enter the GitLab instance URL:gitlab的url,获取位置见下图
2、Enter the registration token:获取位置见下图
3、Enter a description for th runner:说明随便填
4、Enter tags for the runner:指定标签,用于标识runner
5、Enter an executor:我用的shell
registration token可以从2个地方获取,一个是gitlab全局的token,另一个是项目的token:
全局token获取位置:
项目token获取位置:
进入某个项目获取
每个项目的token不同,注册后直接与该项目绑定。后期也可以在gitlab中为该注册的runner绑定其他的项目。runner管理功能入口见下图:
-
安装时碰到的问题
1、为repo 'appstream' 下载元数据失败 : Cannot prepare internal mirrorlist: No URLs in mirrorlist
这个问题是因为 CentOS 8 已于2021年12月31日停止官方服务,而在2022年1月31日,CentOS 团队从官方镜像中移除了 CentOS 8 的所有包。现在他们被转移到 vault.centos.org。
可以在 /etc/yum.repos.d 中更新一下源。使用 vault.centos.org 代替 mirror.centos.org 即可。
按照以下步骤操作:
sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*
2、为 repo 'gitlab_gitlab-ce' 下载元数据失败 : repomd.xml GPG signature verification error: Bad GPG signature
这个问题是由于 GitLab 的包签名密钥在一段时间内过期,影响了 GitLab 和 GitLab Runner 的升级和新安装。需要更新系统上用于签名 GitLab Linux 包的 GPG 密钥。
按照以下步骤操作:
#从存储库密钥环中删除任何现有密钥
for pubring in /var/cache/dnf/gitlab_gitlab-?e-*/pubring
do
gpg --homedir $pubring --delete-key F6403F6544A38863DAA0B6E03F01618A51312F3F
done
#清理缓存
sudo dnf clean all
#更新
sudo dnf check-update
-
项目打包
在项目pom.xml同级目录中创建.gitlab-ci.yml文件:
stages:
- build
build:
stage: build
script:
- echo "Building WAR file"
- mvn clean package -P prod
artifacts:
paths:
- ep.war
-
打包时碰到的问题
1、此作业已阻塞,因为该项目没有分配任何可用Runner
这个问题是因为.gitlab-ci.yml文件中的作业没有指定任何标签,而GitLab Runner被配置为只运行具有特定标签的作业。有两种方式解决这个问题:
1)在.gitlab-ci.yml文件中指定tags
stages:
- build
build:
stage: build
script:
- echo "Building WAR file"
- mvn clean package -P prod
tags:
- my-tag #注册时填写的标签
artifacts:
paths:
- ep.war
2)允许runner运行没有标签的作业