Gitlab-Runner安装并注册

article/2025/10/15 4:17:50

本文介绍Gitlab-Runner的安装运行(包括docker方式安装运行及二进制直接运行),并介绍如何将Gitlab注册到Gitlab。同时还介绍了gitlab-runner的一些常用操作命令。

安装Gitlab-Runner

gitlab-runner可以使用docker方式运行,也可以在主机上运行其二进制可执行文件,可按如下方式进行选择:

  • 执行通用的构建测试任务及与不需要直接访问主机目录的,以docker方式安装;
  • 执行部署类任务或需要直接访问主机目录的,以二进制方式安装;

以下分别介绍上述两种安装方式。

使用docker安装gitlab-runner

使用docker方式安装的,需先在主机上安装docker环境,可参考 Docker 官方安装文档。以下操作假设主机上已正确安装并配置了docker运行环境;

提示:可以使用基于alpine的镜像来减小大小

# 建立配置挂载目录
mkdir -p /data/gitlab-runner/config
# 建立构建目录挂载目录
mkdir -p /data/gitlab-runner/home
# 注意,这里我们使用了基于alpine的镜像来减小大小;使用 --restart 标识来自动重启
docker run -d --name gitlab-runner --restart always \-v /data/gitlab-runner/config:/etc/gitlab-runner \-v /data/gitlab-runner/home:/home/gitlab-runner \-v /var/run/docker.sock:/var/run/docker.sock \gitlab/gitlab-runner:alpine# 通过以下命令设置docker开机自启
sudo systemctl enable docker

docker安装的gitlab-runner常用操作

运行命令

使用已有容器

# 容器已经运行的情况下
# 1. 交互式执行,执行以下命令,然后输入命令
docker exec -it gitlab-runner /bin/bash
# 然后执行命令
gitlab-runer --help
# 2. 单次执行
docker exec gitlab-runner gitlab-runner --help

使用临时的:

docker run --rm -t -i gitlab/gitlab-runner:alpine --help
# -it 使用交互式终端
# --rm 自动删除

重启gitlab-runner

docker restart gitlab-runner

升级版本

# 获取最新
docker pull gitlab/gitlab-runner:alpine
docker stop gitlab-runner && docker rm gitlab-runner
docker run -d --name gitlab-runner --restart always \-v /var/run/docker.sock:/var/run/docker.sock \-v /data/gitlab-runner/config:/etc/gitlab-runner \-v /data/gitlab-runner/home:/home/gitlab-runner \gitlab/gitlab-runner:alpine

查看日志

docker logs gitlab-runner

配置 gitlab-runner 别名

~/.bash_profile~/.bashrc 文件中加入如下函数配置,后续运行 gitlab-runner 命令时即可省去docker exec 命令

# 添加 gitlab-runner 直接执行到容器
function gitlab-runner(){docker exec -it gitlab-runner gitlab-runner $@
}

使用二进制包安装运行gitlab-runner

获取安装包安装并运行

  • Centos or RedHat 使用如下命令安装:

    ARCH=$(arch)curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/rpm/gitlab-runner$ARCH.rpm"rpm -i gitlab-runner_$ARCH.rpm
    
  • Debian or Ubuntu 使用如下命令安装

    ARCH=$(arch)curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_$ARCH.deb"dpkg -i gitlab-runner_$ARCH.deb
    
  • Windows 安装

    请参考官方文档: https://docs.gitlab.com/runner/install/windows.html#installation

  • 测试是否安装成功,如能成功输出gitlab-runner的用法信息,则表示安装成功

    gitlab-runner --help
    
  • 测试是否成功启动

    gitlab-runner status
    # 如输出 Service is running,则表示成功启动了
    

    通过docker方式运行的runner在运行 gitlab-runner status时会输出 not running,这对于docker方式运行的runner是正常的,只有直接运行于主机上的runner需要启动对应的服务;

安装并更新Git版本

Gitlab-CI 任务在 runner 机器上执行,会先通过git获取对应仓库的最新代码,这个获取代码的操作是通过git来完成的,所以我们需要安装git工具;

  • 安装Git

    sudo yum install -y git# 查看版本
    git --version
    # centos7 上为 1.8.x,无法满足gitlab要求
    
  • 升级Git版本

    某些linux发型版上git版本过低,在执行流水线时会失败,需要升级git版本,可按如下方式从源码安装最新git版本;

    • 下载git v2.27.0源码

      ## 以下下载方式任选其一
      # 可选下载方式1 - 从gitee 克隆
      git clone -b v2.27.0 https://gitee.com/hanlyjiang/git.git git-2.27.0
      cd git-2.27.0 && git checkout -b tag-v2.27.0 v2.27.0# 可选下载方式2 - 从github直接下载包
      curl -LJO https://github.com/git/git/archive/v2.27.0.tar.gz
      tar -xvf git-2.27.0.tar.gz 
      cd git-2.27.0
      
    • 编译安装

      # 安装编译依赖库
      sudo yum install  -y autoconf gcc openssh zlib-devel# 编译并安装
      make configure ;# as yourself
      ./configure --prefix=/usr ;# as yourself
      make -j8 all ;# as yourself
      sudo make install ;# as root# 确认版本:
      git --version
      # git version 2.27.0
      

将gitlab-runner用户添加到docker用户组(可选)

如需要在该gitlab-runner的CI脚本中运行docker命令,这需要将 gitlab-runner用户添加到docker的用户组,可执行如下命令:

sudo usermod -a -G docker gitlab-runner# 验证权限
sudo -u gitlab-runner -H docker info

修改 gitlab-runner 构建目录

如在执行ci任务时,拉取代码时报build目录权限问题,可尝试按如下方式修改指定runner的构建目录

  1. 查找配置文件路径

    gitlab-runner list 
    # 其中ConfigFile的值就是对应的配置文件,如:
    # ConfigFile=/etc/gitlab-runner/config.toml
    
  2. 修改 builds_dir 指向

    找对该任务对应的[[runner]] 配置段,并在该配置中添加 builds_dir 指向新的具有权限的目录,然后重启启动gitlab-runner即可;

    [[runners]]name = "blockdataapi-engine"url = "http://172.18.0.208/"token = "Y-6zdV9zzi8xsY1rygbn"executor = "shell"builds_dir = "/data/gitlab-runner/builds"[runners.custom_build_dir][runners.cache][runners.cache.s3][runners.cache.gcs]
    

注册 Runner 到 Gitlab

这里我们将runner注册为群组的Runner,群组runner可以在群组中共享,所有子群组和项目都可以使用该Runner。也可以将Runner注册到指定项目仓库上,操作上只有获取gitlab-runner注册信息时不一样;

获取gitlab-runner注册信息

如需注册到具体项目,在项目的设置在进入对应的CI/CD设置即可,后续操作流程一致;

在群组的设置中打开 CI/CD 设置
20210224180602

展开 Runner 栏位

20210224180606

这里我们选择通过手动设置group runner的方式来注册,可以获取到以下信息:

20210224180610

注册runner

以docker方式运行的gitlab-runner可按如下方式进入交互环境,直接二进制运行的无需此操作

在gitlab-runner 的机器上执行注册命令,将runner注册到gitlab,为了方便操作,我们使用以下命令进入gitlab-runner容器shell环境:

docker exec -it gitlab-runner /bin/bash

执行完成后出现如下交互窗口

bash-4.4#

docker方式运行的runner需在此bash中执行命令,主机之间运行的runner直接在shell中执行即可。

执行register命令进行注册

gitlab-runner register 
# url:
http://172.18.0.208/
# token
cEJ611JDeCWSMyu7WXwx
# description - 用于辨识该注册所属的群组或项目,可以设置为方便区分的字符串
sonarqube-runner
# ci-tag - 标签用于后续CI配置中选择此执行器,后期可以通过gitlab界面更改
sonarqube,common-build
# executor - 后续CI任务的执行方式,docker方式运行的请选择docker
docker
# default image - CI配置中未指定镜像时默认使用的镜像
busybox:1.31.1

以下为一个注册过程的交互示例:

bash-4.4# gitlab-runner register 
Runtime platform                                    arch=amd64 os=linux pid=205 revision=05161b14 version=12.4.1
Running in system-mode.                            Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://172.18.0.208/
Please enter the gitlab-ci token for this runner:
cEJ611JDeCWSMyu7WXWi
Please enter the gitlab-ci description for this runner:
[e0311b0ce34b]: sonarqube-runner
Please enter the gitlab-ci tags for this runner (comma separated):
sonarqube,common-build
Registering runner... succeeded                     runner=cEJ611JD
Please enter the executor: virtualbox, docker+machine, docker-ssh+machine, custom, docker-ssh, parallels, kubernetes, docker, shell, ssh:
docker
Please enter the default Docker image (e.g. ruby:2.6):
busybox:1.31.1
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

注册后确认

完成后在刚才的页面可以看到;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T9BAQC8f-1653574538681)(https://gitee.com/hanlyjiang/image-repo/raw/master/imgs/20210224180615.png)]

取消注册

使用 list 命令查看当前注册的token及url

gitlab-runner list
# 输出类似
Runtime platform                                    arch=amd64 os=linux pid=23 revision=05161b14 version=12.4.1
Listing configured runners                          ConfigFile=/etc/gitlab-runner/config.toml
sonarqube-runner                                    Executor=docker Token=wNwxjEztRpKxYDyK1zVd URL=http://172.18.0.208/

使用list命令输出的token机url作为参数 使用unregister命令取消注册

gitlab-runner unregister -t 7KM7ftthLAYeJdsB3Tbk -u http://172.18.0.208/

http://chatgpt.dhexx.cn/article/Sh6PWH9y.shtml

相关文章

通过docker搭建gitlab

通过docker搭建gitlab 一、安装 拉取docker镜像 docker pull gitlab/gitlab-ce启动容器 docker run -d -p 4443:443 -p 8080:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/dat…

gitlab-runner 注册失败

问题: 用docker启动gitlab-runner,注册runner 时报错:PANIC: Failed to register the runner. You may be having network problems。 不仅如此,我用gitlab-runner verify命令,也是报错:ERROR: Verifying r…

gitlab:(二)gitlab注册用户和邀请进入项目的问题

.新注册用户无法在管理员界面激活 在管理员界面无法进行管理,找不到相关的操作界面 当前gitlab版本 尝试降低gitlab版本 卸载之后删除残留文件 安装指定的低版本:gitlab-ce-12.7.5-ce.0.el7.x86_64.rpm yum install policycoreutils openssh-server op…

注册gitlab-runner

注册gitlab-runner 一、注册gitlab-runner(shared)二、注册gitlab-runner(group)三、注册gitlab-runner(specific) 使用管理员账号登录gitlab 一、注册gitlab-runner(shared) shared类型的gitlab-runner会运行整个gitlab平台项目中的作业; 二、注册gitlab-runne…

gitLab注册There was an error with the reCAPTCHA. Please solve the reCAPTCHA again.

目录 解决方案:第一步:第二步: Gitlab注册时报错:There was an error with the reCAPTCHA. Please solve the reCAPTCHA again. 今天注册时碰到以下问题: 提交后,给出如下图示 上面的错误是因为注册时有一…

gitlab-runner配置与注册

(1)启动gitlab-runner #创建volume docker volume create gitlab-runner-my-config #docker启动runner docker run -d --name gitlab-my-runner --restart always --nethost \-v /var/run/docker.sock:/var/run/docker.sock \-v gitlab-runner-my-conf…

gitLab账号注册,登陆,配置SSH,验证

文章目录 前言注册账号登陆添加SSH验证配置 前言 本文主要目的是讲述gitlab账号注册,登陆功能,以及如何生成ssh key,并添加ssh key到gitlab中。通过git工具将gitlab上的代码拉取到本地来验证ssh功能是否进行了有效的配置 注册账号 第一步&…

Servlet 过滤器( Filter )

Servlet 过滤器( Filter ) 原理图: 过滤器的使用场景 登录权限验证、资源访问权限控制、敏感词汇过滤、字符编码转换过滤器的优势 便于代码重用,不必每个servlet中还要进行相应的操作配置方式 web配置方式 <!--过滤器的xml配置 --> <filter><!--名称-->…

servlet过滤器中的注解配置详解

文章目录 注解配置WebFilter中的属性1. urlPatterns2. initParams3. dispatcherTypes 多个过滤器的执行顺序销毁阶段的触发机制 注解配置WebFilter中的属性 1. urlPatterns 指定一组过滤器的 URL 匹配模式。等价于 标签。 例1&#xff1a;将所有的请求都过滤掉 配置如果是指定…

Servlet过滤器与SpringMVC拦截器

Servlet API中提供了一个Filter接口&#xff0c;开发web应用时&#xff0c;如果编写的Java类实现了这个接口&#xff0c;则把这个java类称之为过滤器Filter。Web开发人员通过Filter技术&#xff0c;对web服务器管理的所有web资源&#xff1a;例如Jsp, Servlet, 静态图片文件或静…

JavaWeb Servlet过滤器概述

Servlet过滤器 1、什么是过滤器 Servlet过滤器具有拦截浏览器端请求的功能&#xff0c;Servlet过滤器可以改变请求中的内容来满足实际开发中的需求。 实质上Servlet过滤器就是在web应用服务器中的一个web应用组件&#xff0c;用于拦截浏览器与目标资源的请求&#xff0c;并对…

Servlet+过滤器

一、Servlet 1.1 概念 Servlet&#xff1a;Server Applet的简称&#xff0c;是服务器端的程序&#xff08;代码、功能实现&#xff09;&#xff0c;可交互式的处理客户端发送到服务端的请求&#xff0c;并完成操作响应。动态网页技术JavaWeb程序开发的基础&#xff0c;JavaEE…

java servlet过滤器简解及实例

在整个概念中&#xff0c;个人觉得有一篇文章写得不错&#xff0c;通俗易懂&#xff0c;这里就直接套用以上原博文&#xff0c; 一、概念&#xff1a; Filter也称之为过滤器&#xff0c;它是Servlet技术中比较激动人心的技术&#xff0c;WEB开发人员通过Filter技术&#xff0c;…

Servlet过滤器案例-自动登录

使用过滤器实现自动登录 登录的jsp页面 <% page language"java" import"java.util.*" pageEncoding"UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head> <title&g…

Servlet过滤器拦截器

文章目录 1、什么是Servlet&#xff1f;2、过滤器与拦截器的区别 1、什么是Servlet&#xff1f; 参考&#xff1a;https://blog.csdn.net/wozaibohaibian/article/details/124778494 ​ servlet就是一个组件,需要符合servlet规范,并且需要部署到servlet容器里面才能运行 注&…

servlet过滤器原理及使用

原理 首先了解什么是过滤器&#xff0c;各种文章已经写的很清楚了 引用来自这篇大牛的博客 是Servlet技术中最激动人心的技术&#xff0c;WEB开发人员通过Filter技术&#xff0c;对web服务器管理的所有web资源&#xff1a;例如Jsp, Servlet, 静态图片文件或静态 html 文件等进…

Servlet——过滤器

Servlet过滤器 什么是过滤器 过滤器是一个程序&#xff0c;它先于与之相关的Servlet页面运行在服务器上&#xff0c;但它并不是一个标准的Servlet&#xff0c;它不能处理用户请求&#xff0c;也不能对客户端生成响应。它主要用于对HttpServletRequest进行预处理&#xff0c;也…

servlet过滤器的简单使用

为什么要用过滤器或者拦截器&#xff1f; 简单来讲&#xff0c;当一个账户需要进入某个系统调用某个接口时&#xff0c;我们需要对其进行相应验证&#xff0c;否则一旦接口暴露&#xff0c;可能会造成系统崩溃。这个时候我们就需要用拦截器对调用接口一方进行身份验证。 serv…

Servlet过滤器Filter

Servlet Filter 又称 Servlet 过滤器&#xff0c;它是在 Servlet 2.3 规范中定义的&#xff0c;能够对 Servlet 容器传给 Web 资源的 request 对象和 response 对象进行检查和修改。Filter 不是 Servlet&#xff0c;不能直接访问&#xff0c;它本身也不能生成 request 对象和 r…

Servlet之过滤器

问题引入 以往的Servlet中&#xff0c;有冗余代码&#xff0c;多个servlet都要进行编写 概念 过滤器(Filter)是处于客户端于服务器资源之间的一道技术。 图示&#xff1a; 过滤器的作用 执行地位在Servlet之前&#xff0c;客户端发送请求时&#xff0c;会先经过Filter&#xff…