【Gitlab】CICD流水线自动化部署教程

第一步,准备 GitLab 仓库

这个不用多说,得先保证你的项目已经托管在一个 GitLab 仓库中。


第二步,定义 `.gitlab-ci.yml` 文件

在你的项目根目录中创建一个 `.gitlab-ci.yml` 文件。这个文件将定义所有 CI/CD 的工作流程,包括构建、测试和部署等步骤

例:


第三步,编写构建脚本

这一步的内容根据自己实际需求来写,可以参考以下配置



variables:
  NODE_OPTIONS: "--max-old-space-size=4096"  #这个地方为什么写这个,是因为我部署的服务器分配的内存太少了而报错,所以这里根据你们实际需要
# 定义流水线阶段
stages:
  - build
 

# 配置缓存节点模块提升性能
cache:
  paths:
    - node_modules/

# 构建作业
build_job:
  stage: build
  image: node:latest
  script:
    - echo "Starting build process" # 断点: 开始构建过程
    - npm install
    - npm run build-only # 请根据你的情况视情况更改为正确的构建命令,就是你本地里面的打包命令
    - echo "Starting deployment"
    - echo "Current working directory is:"
    - pwd
    - cp -r dist/* /var/www/chatcs/  # 根据你自己的目录,这是要存放到的目录
  
  artifacts: # 存档构建结果,用于后续步骤
    paths:
      - dist/
  only:
    - main # 只有 main分支的提交会触发构建-根据你的需要
  tags:
    - chatcs # 假设标签是 chatcs ,这个也要根据你的需要
  
    

第四步,在你要部署的服务器上,安装GitLab Runner

特别提醒一句,以下的配置均在服务器中,这个服务器一定先把该安装的依赖安装好,比如你是前端,先把node下载安装好。

4.1 安装地址: GitLab Runner 官方文档

安装 GitLab Runner 可以通过以下步骤进行:

1. 首先你需要连接到你的 Linux 服务器,在服务器上打开终端。

2. 在终端中,使用管理员权限(比如 sudo)执行以下命令来安装 GitLab Runner:
   - Debian/Ubuntu 系统:
    
     // 安装依赖
     sudo apt-get update
     sudo apt-get install -y curl wget gnupg2

     // 安装 GitLab Runner
     curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
     sudo apt-get install gitlab-runner
     
   - CentOS/RHEL 系统:
     
     //安装依赖
     sudo yum install curl policycoreutils-python openssh-server

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

4.2 注册 GitLab Runner

注册命令: gitlab-runner register

这一步容易出问题,最容易出问题的是选择执行方式.你可以在配置文件 `config.toml` 中设置 Runner 的执行方式,例如使用 Docker、Shell 、ssh等,以确保 Runner 能够正确地执行你的 CI/CD 任务。

简单快捷的方式是: shell

在注册过程中,系统将提示你输入 GitLab 的 URL、项目的注册令牌等信息。你可以在项目的 `Settings` --> `CI/CD` --> `Runner` 部分找到所需的注册令牌。

4.3 确保 Runner 处于活跃状态

确保你注册的 Runner 是活跃的,并且配置正确。在 GitLab Runner 的配置文件(通常位于 `/etc/gitlab-runner/config.toml`)中,确认 Runner 的配置,比如它应该指向正确的 GitLab 实例,且 Runner 标签符合项目的 `.gitlab-ci.yml` 文件中定义的要求。

4.4 启动 Runner  

你可以使用以下命令启动它:

gitlab-runner start

确认 Runner 正在运行后,回到 GitLab 项目的 CI/CD 设置中的 Runners 部分。等待几秒钟,你应该能够看到 Runner 的状态变为绿色,这意味着它已准备好接收工作。


 5.验证可行性

至此,配置完成,你可以在本地git push后查看部署的网址是不是最新的代码。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

连锁餐饮数字化:一体化运营管控平台

内容来自演讲:刘腾飞 | 上海奥谱创网络科技有限公司 | CEO 摘要 本文介绍了企业级管理系统的需求和现状,以及如何通过数据指标为依据的改善循环来优化企业的运营。文章还提出了场景驱动、迭代上线的方法,并介绍了两个平台、三个统一的解决方…

RK3568平台开发系列讲解(Linux系统篇)Linux 热拔插机制 mdev的使能

🚀返回专栏总目录 文章目录 一、什么是热插拔二、热插拔的机制三、mdev的开启沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 Linux 热拔插。 一、什么是热插拔 热插拔是指在设备运行的情况下,能够安全地插入或拔出硬件设备,而无需关闭或重启系统。这意…

自动驾驶中的“雷达”

自动驾驶中有好几种雷达,新手可能会蒙蔽,这里统一介绍一下它们。 首先,所有雷达的原理都是发射波,接收回波,并通过发射和接收的时间差以及波的速度计算距离。只不过发射的波不同,功能也不同。 激光雷达 …

kubelet源码学习(二):kubelet创建Pod流程

本文基于Kubernetes v1.22.4版本进行源码学习 4、kubelet创建Pod流程 syncLoop()的主要逻辑是在syncLoopIteration()方法中实现,Pod创建相关代码只需要看处理configCh部分的代码 // pkg/kubelet/kubelet.go // 该方法会监听多个channel,当发现任何一个channel有数…

Jenkins的特殊操作定时自动执行任务以及测试报告调优

java -Dhudson.model.DirectoryBrowserSupport.CSP -jar Jenkins.war 测试报告 不美丽 执行上面的代码 重启jenkins 就好了

基于SpringBoot+Vue实现的电影院售票系统

文章目录 项目介绍影院管理影片管理影厅管理订单管理用户管理角色权限管理 技术选型成果展示前台系统后台管理系统 账号及其他说明 项目介绍 基于SpringBootVue实现的电影院售票系统整体设计了用户、管理员两个角色。 用户登录系统可进行电影查看、分类查看、影片搜索、选择影…

如何解决HTTP 404错误,这里给出详细解决办法

404错误是一个HTTP状态代码,这意味着你试图在网站上访问的页面在他们的服务器上找不到。 需要明确的是,该错误表示虽然服务器本身是可访问的,但显示该错误的特定页面是不可访问的。 个别网站经常自定义这个错误信息。所以,请记住,错误可能会以任何可以想象的方式出现,这…

SDCMS靶场漏洞挖掘

昨天才打完了khbc靶场,今天就马上投入到sdcms靶场,通过这个靶场,还是有不少的感悟的,下面,我们就以网安小白的身份来审视一下这个靶场!! ​​​​​​​ ​​​​​​​ ​​​​…

【华为机试】2023年真题B卷(python)-发广播

一、题目 题目描述: 某地有N个广播站,站点之间有些有连接,有些没有。有连接的站点在接受到广播后会互相发送。 给定一个N*N的二维数组matrix,数组的元素都是字符’0’或者’1’。 matrix[i][j]‘1’,则代表i和j站点之间有连接,mat…

软件测试面试--说一个印象最深的bug?

其实,面试官并不关心你描述的这个bug是否真的有价值,或有多曲折离奇?他只是: 1.了解你平时工作中的测试能力 所以,这就要求的你平时工作中遇到bug时试着自己去定位,定位bug的过程远比你的单纯的执行测试用…

华清远见作业第十六天

思维导图: 双向循环链表头插入: 代码: Doublelist insert_head(Doublelist head,datatype element) {//创建新节点sDoublelist screate_node();if(NULLs){return head;}s->dataelement;//数据存储//判断链表是否为空if(NULLhead){heads;…

解决Qt“报无法定位程序输入点xxx于动态连接库“问题

今天,在使用QtVS2019编译工程时,弹出"无法定位程序输入点xxx于动态链接库"问题,如图(1)所示: 图(1) 报"无法定位程序输入点xxx于动态链接库"问题 出现这种问题的原因有很多: (1) 工程Release/Deb…

RK3588平台开发系列讲解(AI 篇)RKNN rknn_query函数详细说明

文章目录 一、查询 SDK 版本二、查询输入输出 tensor 个数三、查询输入 tensor 属性(用于通用 API 接口)四、查询输出 tensor 属性(用于通用 API 接口)五、查询模型推理的逐层耗时六、查询模型推理的总耗时七、查询模型的内存占用情况八、查询模型里用户自定义字符串九、查询原…

双端队列、优先级队列、阻塞队列

双端队列、优先级队列、阻塞队列 文章目录 双端队列、优先级队列、阻塞队列1 双端队列1.1 概述1.2 应用实例1.2.1 双端链表实现1.2.2 数组实现1.2.3 测试代码 1.3 课后作业- LeeTCode103 2. 优先级队列2.1 概述2.2 基于无序数组实现2.3 基于有序数组实现2.3 堆实现优先级队列2.…

阻抗控制中的弹簧与阻尼影响分析

阻抗控制是一种机器人控制方法,通过调整机器人的阻抗来实现对机器人的精准控制。在阻抗控制中,弹簧和阻尼是两个重要的参数,它们对机器人的性能和稳定性有很大的影响。 弹簧代表机器人的刚度和弹性,而阻尼代表机器人的阻尼特性&a…

63权限提升-Linux脏牛内核漏洞SUID信息收集

今天讲到的方法是suid和内核漏洞 案例一Linux 提权自动化脚本利用-4 个脚本 两个信息收集:LinEnum、linuxprivchecker 两个漏洞探针:linux-exploit-suggester、linux-exploit-suggester2 信息收集有什么用? 信息收集就能判断能否进行s…

无人叉车驻车定位RFID传感器CNS-RFID-01|1S的CAN总线通信连接方法

无人叉车驻车定位RFID传感器CNS-RFID-01|1S支持CAN总线通信方式,广泛应用于智能仓库,AGV |RGV小车,无人叉车,搬运机器人定位,驻车等领域,本篇幅主要介绍器CNS-RFID-01|1S RFID传感器的CAN总线通信连接方法。…

re模块(正则)

【 一 】 re模块概述 在线测试工具 正则表达式在线测试 - 站长工具 随着正则表达式越来越普遍,Python 内置库 re 模块也支持对正则表达式使用 Python 提供了re模块可以支持正则表示表达式使用,re模块提供了9个常量、12个函数 使用方法: re…

leetcode 38. 外观数列(medium)(优质解法)

链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 代码: class Solution {public String countAndSay(int n) {//要进行 n - 1 次描述才能得到结果// last 代表当前要描述的字符串String last"1";// ret 代表描述…

【Git】fatal: bad boolean config value ‘true~‘ for ‘core.longpaths‘

windwos操作系统git config设置错了参数值,解决方法。 出现原因 在拉取代码时,仓库中存在文件名过长得文件,拉取报错了“filename too long” 解决 git config --system core.longpaths true结果在复制命令时,粘贴到命令行多了一…