GitLab Runner-前端入门指南

1,288 阅读4分钟

GitLab Runner

说明 当前安装环境是centOS 7.7版本,建议下列教程都在7.6~7.8版本附近内进行. 如果是centOS 6.x版本,建议放弃,直接重新安装7.6以上版本的虚拟机.鄙人实操过,坑太多. 附:常见命令:

# 查看当前系统
cat /etc/redhat-release

工欲善其事,必先利其器,在安装 GitLab Runner之前,我们需要先将前端的基础工具nvm,nodejs,docker都安装好

NVM

自动安装

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
# 或
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash

重启bash

根据自己的系统进行选择

# bash: centOS系统,重启bashrc 
source ~/.bashrc

# zsh: 
source ~/.zshrc

# ksh: 
. ~/.profile

安装Nodejs

nvm install lts/erbium 
nvm install v12.18.3 # 安装12版本

Git

安装Git

# 安装Git 
yum install git

# 查看版本
git --version #可能是1.8.3.1 版本,需要升级

手动升级Git

如果git版本低于2.0,请手动升级git版本

1.安装依赖
# 安装依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install gcc perl-ExtUtils-MakeMaker
2.编译git源码
# 访问src目录
cd /usr/src/
# 下载git文件
wget https://github.com/git/git/archive/v2.25.1.zip
# 解压文件并删除之前文件
unzip v2.25.1.zip && rm v2.25.1.zip
# 访问解压后的文件
cd git-2.25.1

#先编译,看有无报错:
make prefix=/usr/local/git all

#若编译成功,则先卸载旧版本的git,再安装新版本:
rpm -e --nodeps git
make prefix=/usr/local/git install
3. 创建软链接
ln -s  /usr/local/git/bin/git /usr/bin/git
#检查版本:
git --version

Docker

1.自动安装

sudo curl -sSL https://get.docker.com/ | sh  

GitLab Runner

Linux官网安装教程传送门

1.安装

自动安装 建议使用,避免很多权限问题

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
yum install gitlab-runner

使用二进制文件安装

# Linux x86-64
sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64"

采用手动构建,则需要手动添加权限,例如将/usr/local/bin添加到secure_path

2.授予其执行权限:

sudo chmod +x /usr/local/bin/gitlab-runner

3.创建一个GitLab CI用户:

sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

4.安装并作为服务运行:

# 安装
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
# --user指定将用于执行构建的用户,官网使用gitlab-runner,这里建议小白设置root,避免很多权限问题
#`--working-directory  指定将使用**Shell** executor 运行构建时所有数据将存储在其中的根目录

# 启动服务
sudo gitlab-runner start

5.注册Gitlab Runner

# 1.注册
sudo gitlab-runner register
# 2.输入 Gitlab 实例的 URL:
https://gitlab.example.com/
# 3.输入用来注册 Runner 的 token:
TokenExample
# 4.输入 Runner 的描述,随后可在 GitLab 界面中修改
fedrunner

# 5.输入与 Runner 绑定的标签(英文逗号隔开)(可修改)
centos7.7,nodejs12,shell

# 6.选择 Runner 的执行方式:建议选择shell
Please enter the executor: docker, parallels, shell, kubernetes, docker-ssh, ssh, virtualbox, docker+machine, docker-ssh+machine:
shell

# 7.如果选择的执行方式是 docker,会要求填写默认的镜像,这个镜像也可以在 .gitlab-ci.yml 中定义:
 Please enter the Docker image (eg. ruby:2.1):
 alpine:latest

6.更新GitLab Runner


# 停止
sudo gitlab-runner stop

# 更新文件
sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64"

# 授予其执行权限:
sudo chmod +x /usr/local/bin/gitlab-runner

# 启动服务:
sudo gitlab-runner start

# 重新启动
sudo gitlab-runner restart

# 查看状态
sudo gitlab-runner status

7.其他语法

# 停止运行并卸载GitLab Runner。
gitlab-runner uninstall 

常见权限问题:

1. 添加secure_path权限(手工安装)

vim /etc/sudoers

编辑内容如下:

#Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
# 修改如下:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

# 然后强制保存
:qw!
# 设置权限
echo "gitlab-runner ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

2. 切换root权限

遇见bash: npm: command not found构建的环境变量问题都可以通过使用root权限解决. gitlab-ci的runner默认使用gitlab-runner用户执行操作; 通过指令ps aux|grep gitlab-runner可以看到:

/usr/local/bin/gitlab-runner run --working-directory /home/gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-runner --user gitlab-runner

其中:

  • --working-directory:设置工作目录, 默认是/home/{执行user}
  • --config:设置配置文件目录,默认是/etc/gitlab-runner/config.toml
  • --user:设置执行用户名,默认是gitlab-runner

因此想要更改user为root只需要重新设置--user属性即可,步骤如下:

  1. 删除gitlab-runner
sudo gitlab-runner uninstall
  1. 安装并设置--user(例如我想设置为root)
gitlab-runner install --working-directory /home/gitlab-runner --user root
  1. 重启gitlab-runner
sudo service gitlab-runner restart

验证一下:

再次执行ps aux|grep gitlab-runner会发现--user的用户名已经更换成root了

/usr/bin/gitlab-ci-multi-runner run --working-directory /home/gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-runner --syslog --user root

至此gitlab-runner执行.gitlab-cli.yaml时候便是以root用户去执行操作,再也没有繁琐的权限问题了

3. 删除/注销 Runner

#1. 检测 runner 是否已连接至 gitlab 
gitlab-runner verify
# 2. 注册列表中删除
gitlab-runner verify --delete 
# 3. 注销已注册的runner
gitlab-runner unregister 

#使用令牌注销
gitlab-runner unregister --url http://gitlab.example.com/ --token t0k3n
 
#使用名称注销(同名删除第一个)
gitlab-runner unregister --name test-runner

#注销所有
gitlab-runner unregister --all-runners

4.CI语法

gitlab-ci.yml官网传送门

gitlab-ci.yml中文文档