GitLab Runner 安装、CI/CD流水线配置指南

2024-06-15 06:44

本文主要是介绍GitLab Runner 安装、CI/CD流水线配置指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

GitLab Runner 安装与配置指南

介绍

在本指南中,我们将介绍如何在GitLab服务器上安装并配置GitLab Runner,以及如何编写一个简单的GitLab CI/CD流水线配置文件,来实现自动化的测试、编译、打包和发布。

安装 GitLab Runner

下载并安装 GitLab Runner

  1. 下载 GitLab Runner 二进制文件
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
  1. 赋予执行权限
sudo chmod +x /usr/local/bin/gitlab-runner
  1. 创建 GitLab Runner 用户
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
  1. 安装并以服务的形式运行
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start

解决权限问题

如果在执行流水线任务时遇到以下错误:

ERROR: Job failed: prepare environment: exit status 1.

可以注释掉 /home/gitlab-runner/.bash_logout 中的以下代码段:

if [ "$SHLVL" = 1 ]; then[ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi

若遇到以下权限问题:

ERROR: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:

需要给 gitlab-runner 用户赋予 Docker 权限:

sudo usermod -aG docker gitlab-runner
sudo systemctl restart docker

编写流水线配置文件

在项目的根目录下,创建 .gitlab-ci.yml 文件。以下是一个示例配置:

stages: # 定义阶段- mvn-test- mvn-package-docker-pushvariables: # 设置常量DOCKER_IMAGE_NAME_ENGINE: engine:1.0.0DOCKER_IMAGE_NAME_ENGINE_SCHEDULER: engine-scheduler:1.0.0DOCKER_IMAGE_NAME_ENGINE_SCHEDULER_UI: engine-scheduler-ui:1.0.0DOCKER_IMAGE_PUSH_NAME_ENGINE: 192.168.1.76:8083/engine:1.0.0DOCKER_IMAGE_PUSH_NAME_ENGINE_SCHEDULER: 192.168.1.76:8083/engine-scheduler:1.0.0DOCKER_IMAGE_PUSH_NAME_ENGINE_SCHEDULER_UI: 192.168.1.76:8083/engine-scheduler-ui:1.0.0mvn-test:stage: mvn-testtags:- enginescript:- echo "Start mvn-test... "- mvn test- echo "End mvn-test."mvn-package-docker-push:stage: mvn-package-docker-pushtags:- enginewhen: manualscript:- echo "Start mvn-package... "- mvn clean package- echo "End mvn-package. "- echo "Start docker-build... "- cd engine/engine-app- docker build -t $DOCKER_IMAGE_NAME_ENGINE .- cd ../../scheduler/scheduler-server- docker build -t $DOCKER_IMAGE_NAME_ENGINE_SCHEDULER .- cd ../../scheduler/scheduler-ui- docker build -t $DOCKER_IMAGE_NAME_ENGINE_SCHEDULER_UI .- echo "End docker-build. "- echo "Start docker-push-sit... "- docker tag $DOCKER_IMAGE_NAME_ENGINE $DOCKER_IMAGE_PUSH_NAME_ENGINE- docker tag $DOCKER_IMAGE_NAME_ENGINE_SCHEDULER $DOCKER_IMAGE_PUSH_NAME_ENGINE_SCHEDULER- docker tag $DOCKER_IMAGE_NAME_ENGINE_SCHEDULER_UI $DOCKER_IMAGE_PUSH_NAME_ENGINE_SCHEDULER_UI- docker login 192.168.1.76:8083 -u nexus_app -p lianyu_123- docker push $DOCKER_IMAGE_PUSH_NAME_ENGINE- docker push $DOCKER_IMAGE_PUSH_NAME_ENGINE_SCHEDULER- docker push $DOCKER_IMAGE_PUSH_NAME_ENGINE_SCHEDULER_UI- echo "End docker-push-sit. "

创建 Runner

  1. 在 GitLab 界面中创建 Runner

在“CI/CD Settings -> Runners”页面,点击“New project runner”,配置以下主要选项:

  • Tags:按产品命名,如 engine
  • Runner description:同上
  • Maximum job timeout:设置超时时间,最小600秒
  1. 注册 Runner

在 GitLab 服务器上执行以下命令来注册Runner:

sudo gitlab-runner register --url http://192.168.1.74 --token glrt-WfmzN-7izBW81ZF_x7Xw

注册过程如下:

Runtime platform                                    arch=amd64 os=linux pid=2085600 revision=81ab07f6 version=16.10.0
Running in system-mode.                            There might be a problem with your config based on jsonschema annotations in common/config.go (experimental feature):
jsonschema: '/runners/0/Monitoring' does not validate with https://gitlab.com/gitlab-org/gitlab-runner/common/config#/$ref/properties/runners/items/$ref/properties/Monitoring/$ref/type: expected object, but got nullEnter the GitLab instance URL (for example, https://gitlab.com/):
[http://192.168.1.74]: 
Verifying runner... is valid                        runner=WfmzN-7iz
Enter a name for the runner. This is stored only in the local config.toml file:
[ubuntu-gitlab]: integration
Enter an executor: kubernetes, docker-autoscaler, instance, custom, ssh, docker, docker-windows, docker+machine, shell, parallels, virtualbox:
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" 

查看流水线执行情况

在合并请求(Merge Requests)中可以查看流水线状态。如果显示绿色,表示代码执行成功。点击流水线编号,可以查看各阶段的详细运行情况。

总结

通过以上步骤,我们完成了GitLab Runner的安装与配置,并编写了一个示例的GitLab CI/CD流水线配置文件。这样可以实现代码的自动化测试、编译、打包和发布,提高开发效率。希望本指南对您有所帮助。

这篇关于GitLab Runner 安装、CI/CD流水线配置指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1062713

相关文章

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML