gitlab-runner配置与注册

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

(1)启动gitlab-runner

#创建volume
docker volume create gitlab-runner-my-config
#docker启动runner 
docker run -d --name gitlab-my-runner --restart always --net=host \-v /var/run/docker.sock:/var/run/docker.sock \-v gitlab-runner-my-config:/etc/gitlab-runner \gitlab/gitlab-runner:latest
#查看挂载状态
docker inspect gitlab-my-runner
#版本查看
$ docker exec -it gitlab-my-runner gitlab-runner -version 
Version:      15.2.1
Git revision: 32fc1585
Git branch:   15-2-stable
GO version:   go1.17.9
Built:        2022-07-26T21:21:20+0000
OS/Arch:      linux/amd64

(2)注册gitlab-runner 到git服务器上
查看注册token
root登录->菜单->管理员->概览->Runner->注册一个实例runner
路径http://gitlab.example.com/admin/runners
在这里插入图片描述
此处的url为gitlab的ip或者域名;registration-token为界面查询到的注册令牌token;

docker exec gitlab-my-runner gitlab-runner register -n \--url http://192.168.188.134/ \--registration-token Tz7Uspg1dZ1sLYsb-qUf \--tag-list runInDk \--executor docker \--docker-image docker \--docker-volumes /root/.m2:/root/.m2 \--docker-volumes /root/.npm:/root/.npm \--docker-volumes /var/run/docker.sock:/var/run/docker.sock \--description "runInDk"

结果如下:
在这里插入图片描述
(3)查看注册工程的runner以及修改对应的配置;
root登录->修改运行未标记的作业;这样没有标签的作业也就可以运行;
在这里插入图片描述

(4)demo项目的运行

  1. 创建一个空表项目;
    在这里插入图片描述
  2. 新建一个ci/cd
    ci/cd ->选择分支-》配置流水线->直接默认->点击提交
    在这里插入图片描述
  3. 结果查看
    查看结果,问题为域名无法解析
Running with gitlab-runner 15.2.1 (32fc1585)on runInDk 6x_3_-dC
Preparing the "docker" executor
00:07
Using Docker executor with image docker ...
Pulling docker image docker ...
Using docker image sha256:87452597cd172fae96865ec2275a5c0ee110511a896d3b439aec6a92592fe9d9 for docker with digest docker@sha256:0c4066e2407fb67b5cb609aa2ea380cdd774445e6be1cd651096167963125af5 ...
Preparing environment
00:01
Running on runner-6x3-dc-project-5-concurrent-0 via localhost.localdomain...
Getting source from Git repository
00:02
Fetching changes with git depth set to 20...
Initialized empty Git repository in /builds/gitlab-instance-a7f43c36/test-my-runner/.git/
Created fresh repository.
fatal: unable to access 'http://gitlab.example.com/gitlab-instance-a7f43c36/test-my-runner.git/': Could not resolve host: gitlab.example.com
ERROR: Job failed: exit code 1

解决办法如下:
在容器的/etc/gitlab-runner/config.toml 中添加参数指定http://gitlab.example.com的ip(extra_hosts = [“gitlab.example.com:192.168.188.134”])
因为容器中没有vim工具,所以就在容器外面直接修改配置文件,修改完之后重启容器;步骤如下:

步骤一、查看在本地的映射位置:

docker volume inspect gitlab-runner-my-config[{"CreatedAt": "2022-08-16T16:01:14+08:00","Driver": "local","Labels": {},"Mountpoint": "/var/lib/docker/volumes/gitlab-runner-my-config/_data","Name": "gitlab-runner-my-config","Options": {},"Scope": "local"}
]

步骤二、修改配置新增 extra_hosts = [“gitlab.example.com:192.168.188.134”]

[root@localhost .ssh]# cat /var/lib/docker/volumes/gitlab-runner-my-config/_data/config.toml
concurrent = 1
check_interval = 0[session_server]session_timeout = 1800[[runners]]name = "runInDk"url = "http://192.168.188.134/"token = "xxxxxx"executor = "docker"[runners.custom_build_dir][runners.cache][runners.cache.s3][runners.cache.gcs][runners.cache.azure][runners.docker]tls_verify = falseimage = "docker"privileged = falsedisable_entrypoint_overwrite = falseoom_kill_disable = falsedisable_cache = falsevolumes = ["/root/.m2:/root/.m2", "/root/.npm:/root/.npm", "/var/run/docker.sock:/var/run/docker.sock", "/cache"]shm_size = 0extra_hosts = ["gitlab.example.com:192.168.188.134"]

步骤三:容器重启

 docker restart gitlab-my-runner

再次执行查看执行结果。
在这里插入图片描述

問題:在老版本的gitlab上会报权限问题;如下

Preparing the "docker" executor
00:09ERROR: Failed to remove network for buildERROR: Preparation failed: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/info": dial unix /var/run/docker.sock: connect: permission denied (docker.go:863:0s)

解决办法在docker启动时候加上参数 --privileged=true

docker run -d --name gitlab-my-runner --restart always --net=host  --privileged=true \-v /var/run/docker.sock:/var/run/docker.sock \-v gitlab-runner-my-config:/etc/gitlab-runner \gitlab/gitlab-runner:latest

报错 mkdir: cannot create directory ‘/root/.m2/repository’: Permission denied
Can not write to /root/.m2/copy_reference_file.log. Wrong volume permissions? Carrying on …
解决办法:
尝试修改宿主机的 /root/.m2无法解决问题,通过修改config.toml中的 privileged 改为 false,重启服务器,解决问题。

参考 https://blog.csdn.net/weixin_46152207/article/details/125439982

参考:Gitlab runner docker Could not resolve host
https://stackoverflow.com/questions/50325932/gitlab-runner-docker-could-not-resolve-host
https://docs.gitlab.com/runner/install/docker.html
https://docs.gitlab.com/runner/register/index.html#docker

docker exec gitlab-runner gitlab-runner register -n \--url http://10.0.9.xx/ \--registration-token xxxx \--tag-list nicsp\--executor docker \--docker-image docker \--docker-volumes /root/.m2:/root/.m2 \--docker-volumes /root/.npm:/root/.npm \--docker-volumes /var/run/docker.sock:/var/run/docker.sock \--docker-volumes /root/.ssh:/root/.ssh:/root/.ssh:/root/.ssh \--description "nicsp"

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

相关文章

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…

servlet过滤器的介绍

servlet过滤器是服务器与客户端请求与响应的中间层组件&#xff0c;它主要是用于对浏览器的请求进行过滤处理&#xff0c;并将过滤后的请求再转给下一个资源。 servlet过滤器的基本概念 Servlet过滤器从字面上的字意理解为经过一层次的过滤处理才达到使用的要求&#xff0c;而…

Servlet——过滤器(fiter)

什么是过滤器&#xff1f; 过滤器是Servlet的一个组件&#xff0c;是设计模式中过滤器模式&#xff08;又叫责任链模式&#xff09;的一种经典实现 是Servlet技术中最激动人心的技术&#xff0c;WEB开发人员通过Filter技术&#xff0c;对web服务器管理的所有web资源&#xff…

java基础篇---Servlet过滤器

Servlet过滤器从字面上的字意理解为景观一层次的过滤处理才达到使用的要求&#xff0c;而其实Servlet过滤器就是服务器与客户端请求与响应的中间层组件&#xff0c;在实际项目开发中Servlet过滤器主要用于对浏览器的请求进行过滤处理&#xff0c;将过滤后的请求再转给下一个资源…

mac下idea卡顿问题解决

一、背景 mac下idea卡顿 二、原因 赋予idea的内存太小了&#xff0c;需要给他更大的内存 三、解决方法 1、修改idea.vmoptions 配置文件。 help --Edit Custom VM Options 2、修改文件 这是我修改之前的&#xff1a; -Xms128m -Xmx750m -XX:ReservedCodeCacheSize512m…

macOS看视频卡顿如何修复

很多时候我们都会遇到这样一个问题&#xff1a;明明电脑很新&#xff0c;处理器内存什么的也都不差&#xff0c;但看在线视频就是卡&#xff0c;画面和音频对不上&#xff0c;令人很难受。其实这是Flash播放器开了P2P的原因。今天我就教教大家macOS看视频卡顿如何修复。 先打开…

MAC 外接键盘卡顿处理

系统偏好设置-> 键盘。 1&#xff1a;将『按键重复』调到快&#xff0c;将『重复前延迟』调到段&#xff0c;点击『更改键盘类型』,并且按照提示一步步让电脑识别键盘。 2 &#xff1a;切换『文本』&#xff0c;去勾『触控栏键入建议』&#xff0c;可以起到调优作用。