gitlab-runner搭建CI/CD

news2024/12/31 6:18:34

1. 背景

每次发布代码,需要连接服务器更新代码,进行部署,比较繁琐,浪费时间。方案有jenkins或gitlab-runner。由于代码仓库是gitlab并且只需要自动部署,不需要其他额外功能,这里选择使用gitlab-runner。

2. 升级git(重要!!!)

centos默认yum安装的git版本是1.8.3.1, 现在git最新版本已经是2.39.0。使用老版本gitlab-runner后续重复构建会出现问题,安装gitlab-runner前,要将git进行升级。

  1. 离线安装
# linux版本git下载地址
https://www.kernel.org/pub/software/scm/git/git-2.39.0.tar.gz
# 将文件下载到linux服务器中, 可以是其他目录, 随意
cd /user/local/
wget https://www.kernel.org/pub/software/scm/git/git-2.39.0.tar.gz
# 解压文件
tar -zxvf git-2.39.0.tar.gz
# 安装编译环境
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

# 安装编译环境时, 会自动安装1.8.3.1版本git, 这里需要卸载一下
yum remove git

# 编译
cd git-2.39.0
make prefix=/opt/git all

# 安装
make prefix=/opt/git install
# 安装成功后, 可以看到/opt/git有以下文件
cd /opt/git
ls
# bin  libexec  share
vim /etc/profile

# 文件最下方添加
export GIT_HOME=/opt/git
export PATH=$GIT_HOME/bin:$PATH

# 刷新配置文件
source /etc/profile
# 查看版本
git --version
# git version 2.39.0

2. 安装gitlab-runner

2.1 版本选择

gitlab-runner版本最好和gitlab版本一致、活接近。否则会有版本兼容问题

  1. gitlab版本查看方式
    • 在gitlab中的help可以看到, 如下图
      在这里插入图片描述2. 下载gitlab-runner
    • (centos)下载地址使用清华云镜像: https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/yum/el7/
    1. 选择版本为12.4.1
  2. 安装
    -命令: sudo yum install gitlab-runner-12.4.1-1.x86_64.rpm

2.2. 注册gitlab-runner

  1. 必备信息获取(ur、runner)

    • 进入仓库目录,在settings中打开CICD, 找到Runners
      在这里插入图片描述

    • 点击expand,展开runners可以看到url和token, 复制备用
      在这里插入图片描述

  2. 开始注册

    1. 输入命令: sudo gitlab-runner register

    2. 根据提示输入上面获取的url和token
      在这里插入图片描述

    3. 后面继续输入描述信息, tag, 执行器, 执行器选择shell
      在这里插入图片描述

    4. 至此, 注册成功, 在url和token获取处, 可以看到注册成功的gitlab-runner
      在这里插入图片描述

3. gitlab-ci.yml配置文件

在项目根目录下创建.gitlab-ci.yml文件, gitpush后,gitlab会自动识别该配置文件进行执行脚本,举例如下

1. 配置文件示例

#构建阶段
stages:
  - cloneCode
  - run
# 执行gitlab-runner克隆代码存放位置
variables:
  GIT_CLONE_PATH: /home/gitlab-runner/builds/backend
# 第一个stage
cloneCode:
  when: manual # 手动触发, 不加该节点,提交代码会自动触发任务
  stage: cloneCode
  tags:
    - 'soybean'
  script: # 该下面可写shell脚本
    - echo "代码更新成功"
# 第二个stage
run:
  when: manual # 手动触发
  stage: run
  tags:
    - 'soybean'
  script:
    - ls
    - nohup python3 /home/gitlab-runner/builds/backend/backend/run.py runserver >> soybean.log 2>&1 &
    - echo "启动成功"
    

2. 指定gitlab-runner克隆代码存放位置

  1. 修改gitlab-runner配置文件
cd /etc/gitlab-runner/
vim config.toml

# 在该文件中添加enabled = true, 如下图

在这里插入图片描述

3. .gitlab-ci.yml存放位置

在项目主目录下

4. 完成

1. 效果演示

提交代码后, 效果如下, skipped是因为加了手动执行, 提交代码回会显示跳过
在这里插入图片描述

2. 手动触发

  1. 新建工作计划
    在这里插入图片描述
  2. 执行
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/170686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【React】三.React组件基础学习

目录 React组件介绍 React组件的两种创建方式 使用函数创建组件 函数组件 渲染函数组件 示例 使用类创建组件 抽离为独立的JS文件 步骤 问题记录 React事件处理 事件绑定 记录问题 事件对象 有状态组件和无状态组件 无状态组件(木偶组件)…

XSS(Cross Site Scripting)攻击简介

环境 Ubuntu 22.04IntelliJ IDEA 2022.1.3JDK 17.0.3.1Spring Boot 3.0.1Firefox 108.0.2 问题和分析 在IntelliJ IDEA中创建Spring Boot项目 test0116 ,并选中 Spring Web 依赖。 在 src/main/java 下创建 MyController.java 如下: package com.ex…

Redis缓冲区不会还有人不知道吧?

1 简介 缓冲区,用一块内存空间暂时存放命令数据,以免因 数据和命令的处理速度<发送速度而导致数据丢失和性能问题。但缓冲区的内存空间有限,若持续: 往里写数据速度>从里读数据速度会导致缓冲区需越来越…

ATGM332D-5N卫星导航模块介绍

ATGM332D-5N卫星导航模块简介ATGM332D-5N系列模块是12X16 尺寸的高性能BDS/GNSS 全星座定位导航模块系列的总称。该系列模块产品都是基于中科微第四代低功耗GNSS SOC单芯片—AT6558,支持多种卫星导航系统,包括中国的BDS(北斗卫星导航系统&…

BFS的入门与应用

目录 一、前言 二、BFS原理 二、BFS与最短路径 1、最短路径问题用BFS 2、迷宫(2019年省赛,填空题,lanqiaoOJ题号602) (1)字典序最小的最短路径 (2)输出路径的两种方法 三、B…

拉伯证券|今年首批游戏版号发放,机构看好春节行业景气度恢复

2023年第一批游戏版号发放。 昨日晚间,国家新闻出版署发布1月国产网络游戏审批信息,共88款游戏获批,其我国内各大游戏龙头均有所收成,包含腾讯《黎明觉悟:活力》、网易《逆水寒》(移动版)、完美…

数据治理:数据治理之道-组织机制-敏捷的治理组织

参考《一本书讲透数据治理》、《数据治理》等 组织机制:敏捷的治理组织 数据、组织、软件平台,是企业数字化转型面临的三座大山 数据:数据是企业数字化转型的根本驱动力之一,数字化转型中的企业必须做好数据治理与应用&#xff…

8Manage:分散的软件正在扼杀公司的生产力

在企业领域,数字化不仅仅是指工具能力,而是指用户如何很好地应用他们的知识来做决策,培养关系,建立声誉,以及动员同事、团队。几十年来,企业已经部署了生产力、搜索和协作平台,以提高员工和业务…

使用 tslib 库

tslib 是专门为触摸屏设备所开发的 Linux 应用层函数库,并且是开源。tslib 为触摸屏驱动和应用层之间的适配层, 它把应用程序中读取触摸屏 struct input_event 类型数据(这是输入设备上报给应用层的原始数据)并进行解析的操作过程…

ceres学习笔记(三)

学习了example中pose_graph_3d的部分,记录一下学习过程。 前言: 翻译一下readme里面的内容: ... 该示例还说明了如何将 Eigen 的几何模块与 Ceres 的自动微分功能结合使用。 为了表示方向,我们将使用 Eigen 的四元数&#xff…

测试开发 | Pytest 结合 Allure 生成测试报告

本文节选自霍格沃玆测试学院测试开发内部教材,进阶学习文末加群! 测试报告在项目中是至关重要的角色,一个好的测试报告: 可以体现测试人员的工作量; 开发人员可以从测试报告中了解缺陷的情况; 测试经理可…

锂电产业如何利用视觉检测系统降本增效?

导语:机器视觉检测已在锂电池生产的各个环节中,为产品产量与质量提供可靠保障。维视智造作为锂电池视觉检测系统提供商,为企业提供专业、系统、稳定的锂电行业解决方案,可保证0漏检,确保安全生产,全面提升生…

炫酷 RGB 之.NET nanoFramework 点灯大师

前面介绍了 .NET nanoFramework 入门,本文继续以微雪的 ESP32-S2-Pico 为例介绍 .NET nanoFramework 的开发:控制 ESP32 板载 RGB 灯 和 外接 RGB 灯。内容包含 状态灯的意义、WS2812 、HSV、PWM 等相关知识。 文章目录1. 背景2. 状态灯的意义3. 板载 LE…

萌新如何使用printf函数?

🐎作者的话 如果你搜索输入输出函数,那么你会看到输入输出流、Turbo标准库、标准输出端、stdout什么什么乱七八糟的,作为一个萌新,哪懂这些? 本文介绍萌新在前期的学习中,常用的输入输出函数及其功能~ 跳跃…

ROS2机器人编程简述humble-第二章-Controlling the Iterative Execution .3.1

2.3 ANALYZING THE BR2 BASICS PACKAGE 这一节内容有些多……前一篇:ROS2机器人编程简述humble-第二章-DEVELOPING THE FIRST NODE .2里面只有节点,没有任何实际功能。logger.cpp代码如下所示:#include "rclcpp/rclcpp.hpp"using n…

微信小程序分享的图片被裁切了。怎么让他不裁剪正常比例5:4显示

现在的效果 希望的效果 最主要的是下面的这个函数。把图片转成了5:4的临时图片 cutShareImg(doctorImg:string ){let thatthis;return new Promise((resolve) > {wx.getImageInfo({src: doctorImg, // 这里填写网络图片路径 success: (res) > {var data resconsole.l…

使用 LibreOffice 将 word 转化为 pdf 并解决中文乱码问题

目录 一、安装 LibreOffice 二、解决乱码问题 2.1 查看是否安装中文字体 2.2 准备字体 2.3 导入字体 2.4 验证 项目中有一个在线上传 word 并预览 pdf 报告的需求,因为项目部署在 ubuntu 上面,所以借助libreoffice 实现 word 转 pdf,然…

详细实例说明+典型案例实现 对枚举法进行全面分析 | C++

第五章 枚举法 目录 ●第五章 枚举法 ●前言 1.简要介绍 2.代码及结果示例(简单理解) 3.生活实例 ●二、枚举法的典型案例——鸡兔同笼&质数求解 1.鸡兔同笼 2.质数求解(枚举法) ●总结 前言 简单的来说…

最新 vue-cli 构建项目

vue-cli 构建项目 当前使用最新版本构建一个vue node项目 插件 vue-clivueelement-plusroutervuex 安装vue-cli npm install -g vue-cli安装完后 vue --version 查看版本 vue --version创建一个项目 vue create demo这里要选择版本,不同版本要相组合配置的插件…

反射的基本使用

文章目录1. 一个需求引出反射2. 反射机制2.1 Java Reflection2.2 Java 反射机制可以完成2.3 反射相关的主要类2.4 反射优点和缺点2.5 反射调用优化-关闭访问检查3. Class类3.1 基本介绍3.2 Class类的常用方法3.3 获取Class类对象3.4 哪些类型有Class对象3.5 类加载3.6 类加载流…