小型CI/CD搭建(TODO)

1 方案

因为是在国内,所以gitbub Actions,​​Azure DevOps​这些就直接拜拜了。

目前主流的大概是三种:

1 阿里云效/腾讯云CODING

2 GitLab CE+ GitLab Runner

3 Gitee + Jenkins 

deepeseek比较了一下如下:

阿里云效 vs GitLab vs Jenkins 核心对比表​

​维度​​阿里云效(阿里云 DevOps)​​GitLab(自托管版)​​Jenkins(自托管)​
​部署方式​全托管 SaaS自托管(服务器/K8s)自托管(服务器/Docker)
​代码托管​集成 Codeup(Git)内置 Git 仓库(CE/EE版)需外接(如 Gitee/GitHub)
​CI/CD 引擎​内置流水线(Flow)内置 GitLab CI/CD(YAML 配置)通过插件实现(Groovy/Declarative Pipeline)
​构建速度​快(阿里云内网资源)中等(依赖自建 Runner 性能)慢(需手动优化构建环境)
​制品管理​集成 ACR(容器镜像)内置 Package Registry(支持多种格式)需外接(如 Nexus/Harbor)
​K8s 集成​深度集成 ACK(一键部署)需配置 Runner 或 Argo CD需安装 Kubernetes 插件
​权限管理​阿里云 RAM 子账号体系内置 RBAC(支持 LDAP/AD)依赖插件(如 Matrix Authorization)
​网络适应性​⭐⭐⭐⭐⭐(国内无延迟)⭐⭐(需自建镜像加速)⭐⭐⭐(依赖代码托管平台网络)
​合规性支持​等保/国资云预置需自行配置审计日志无原生支持
​扩展性​仅支持阿里云生态高(开源可修改代码)极高(超 1800 个插件)
​学习成本​低(图形化界面)中等(需学习 YAML 语法)高(需掌握 Groovy/插件配置)
​成本(10人团队/年)​¥7k~10k(含云资源)¥8k~15k(服务器+运维)¥6k~12k(服务器+插件成本)

以前我这边是用过Jenkins的方案,不过感觉这个比较重型,人员投入不少。据说GitLab要轻量一下。

至于阿里云效,感觉也是一个不错的选择,这样用的话会省下运维的成本,此外支持也会比自建更好。但是貌似现在用的人比较少,后面再观察观察吧。所以这次还是重点基于GitLab搭建。

GitLab整体架构如下:

​组件​​推荐工具​​关键配置​
​代码托管​GitLab CE(自托管)利用其 Issues 管理设备固件版本,Wiki 存储规则链文档
​CI/CD​GitLab CI + K8s Runner分阶段构建:
1. mvn package → 2. Docker 镜像推送 → 3. Argo CD 同步到 K8s
​制品库​Harbor(自建)扫描 ThingsBoard 镜像的 CVE 漏洞(Java 依赖需重点监控)
​部署​Kubernetes(阿里云 ACK)使用 Helm Chart 管理 TB 服务:
helm install thingsboard ./thingsboard
​设备模拟​自建 JMeter + MQTT 插件自动化压力测试(模拟 10W+ 设备连接)

2 搭建

2.1 安装GitLab

在安装时候要看看目标机器的配置,我自己的云是阿里云乞丐版那种,内存2G。就运行不起来,直接把系统给拉死掉。没办法,服务器现在也没到货,只有在自己的WSL先安装。我的配置是i7+32G。

步骤如下:

# 添加 GitLab 仓库
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

# 安装 GitLab CE
sudo EXTERNAL_URL="http://your-ip-or-domain" apt install gitlab-ce -y

# 启动 GitLab
sudo gitlab-ctl reconfigure

安装完成后,但是我这边运行是出现了报错,仔细一查原来是端口冲突,按照这个方法直接修改即可。安装gitlab遇到502报错及安装完输入地址显示网页无法连接_gitlab-shell self-check failed-CSDN博客

之后就可以正常登录

创建了一个测试项目

创建项目拉项目也很方便

2.2 安装GitLab Runner

# 安装依赖
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash

# 安装 Runner
sudo apt install gitlab-runner -y

3 运行使用

3.1 配置 

首先要对runner进行配置。 

3.2 工程实例

做了一个最简单java的maven构建工程。

关键是根目录下面配置一个yml文件。

hp@DESKTOP-430500P:~/cicd/test$ cat .gitlab-ci.yml
build-job:stage: buildscript:- mvn clean package  # 确保使用package而不是compileartifacts:paths:- target/*.jar     # 保存可执行JAR

提交上去就会自动构建。

不过现在runner还有点问题。待完善。。。 

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

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

相关文章

Android Studio flutter项目运行、打包时间太长

Android Studio:Android Studio Meerkat Feature Drop | 2024.3.2 Patch 1 flutter Sdk:3.29.3 系统:windows flutter sdk从2.10.5升级到3.29.3,但是Flutter 3.16开始新增了使用 Gradle声明式 plugins {} 块,gradle文…

【OpenGL学习】(六)图形添加纹理

文章目录 【OpenGL学习】(六)图形添加纹理纹理环绕纹理过滤纹理颜色与顶点颜色混合 OpenGL纹理介绍:https://learnopengl-cn.github.io/01%20Getting%20started/06%20Textures/ 【OpenGL学习】(六)图形添加纹理 项目…

allure安装

一、安装java 需要安装java环境,不安装的话在运行前会报错下列问题(前提是安装了allure未安装java) 1.官网地址:https://www.oracle.com/ 2.点击”Download Java“ 3.选择JDK正式版本(需要jdk1.8) 4.选择W…

SpringBoot基于JavaWeb的城乡居民基本医疗信息管理系统

概述 一个基于SpringBoot框架开发的JavaWeb医疗信息管理系统,采用了现代化的技术架构,功能全面,非常适合作为学习项目或二次开发的基础。 主要内容 该系统主要包含以下核心功能模块: ​​用户管理模块​​ 实现管理员、医生、…

SQL变量声明与赋值 分支 循环

– 变量 分支 循环 – declare 变量名 数据类型 – declare 关键字,作用声明变量 – 变量名:以开头 – 数据类型:数据库中支持的数据类型:int varchar(n) text char(n) nvarchar(n) nchar(n) declare name varchar(255)– 定义多…

AWS S3 可观测性最佳实践

AWS S3 介绍 AWS S3(Amazon Simple Storage Service)是一种可扩展的对象存储服务,提供高可用性、持久性和安全性。它允许用户存储和检索任意数量的数据,并通过简单的 Web 服务接口访问这些数据。S3 支持多种存储类别,…

Ubuntu下布署mediasoup-demo

一、引言 mediasoup是一个强大的SFU架构的WebRTC流媒体服务器,凭借其多功能性、高性能和可扩展性,mediasoup成为构建多方视频会议和实时流媒体应用程序的完美选择。它具有联播、SVC、传输BWE和更多尖端功能。本文介绍了mediasoup-demo在Ubuntu下的布署。…

【JVS更新日志】物联网、智能排产APS、企业计划、规则引擎6.25更新说明!

项目介绍 JVS是企业级数字化服务构建的基础脚手架,主要解决企业信息化项目交付难、实施效率低、开发成本高的问题,采用微服务配置化的方式,提供了低代码数据分析物联网的核心能力产品,并构建了协同办公、企业常用的管理工具等&…

解决git pull,push 每次操作输入账号密码问题

服务器每次git pull 的时候都需要输入账号密码,一劳永逸解决它。 解决方案: 找到项目下 .git /config 文件,然后打开,编辑 [rootiZbp11b24d3d7nc8uvjx9mZ .git]# ls branches config description FETCH_HEAD HEAD hooks i…

Netty:深入解析AbstractByteBufAllocator架构设计

AbstractByteBufAllocator 类结构分析 类结构概览 public abstract class AbstractByteBufAllocator implements ByteBufAllocator {// 静态常量static final int DEFAULT_INITIAL_CAPACITY 256;static final int DEFAULT_MAX_CAPACITY Integer.MAX_VALUE;// ...其他常量//…

Java 日志管理与分析

为什么需要日志 ■ 发⽣了什么(What)。 ■ 何时发⽣的(When)。 ■ 发⽣于何处(Where)。 ■ 谁参与其中(Who)。 ■ 参与者来源(第⼆个Where,注意与上⾯的Wher…

bmc TrueSight 监控mysql配置

bmc TrueSight 监控mysql配置 1.将pat加入mysql组 useradd pat;echo patpassword|passwd --stdin pat usermod -aG mysql pat2.设置环境变量 查看文件是否存在[rootu1acmsdp01 ~]# find / -name mysql.sock /var/lib/mysql/mysql.sock ^C [rootu1acmsdp01 ~]# cd /var/lib/my…

WinAppDriver 自动化测试:C#篇

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】

zlmediakit webrtc搭建使用

webrtc 编译与使用 | ZLMediaKit 官方文档参考 编译机器: centos 7.6 gcc 版本 10.1.0 (GCC) cmake version 3.23.0web播放rtsp流视频,使用webrtc毫秒级延迟_webrtc播放rtsp流-CSDN博客 依赖准备 openssl 安装 (openssl 版本要求 1.1 以上) 我的…

Linux下使用docker nginx部署vue前端项目工程

1、使用Docker和Nginx部署Vue项目的步骤 1、准备好VUE项目,已打包编译 2、docker环境已完成安装 3、本地环境上创建nginx目录,下包括conf,html,logs目录。用于容器映射(其实是方便修改文件,因为在容器中…

从实验室到生产线:机器学习模型部署的七大陷阱及PyTorch Serving避坑指南

1 实验室与生产环境的鸿沟:为什么99%的模型部署会失败? (1)部署失败的真实数据统计 根据2023年MLOps行业报告: 78%的组织表示模型部署时间超过预期65%的模型部署后性能下降超过20%仅12%的组织能在一周内完成模型更新…

Module not found: Error: Can‘t resolve ‘core-js/modules/es.array.concat.js‘

遇到错误“Module not found: Error: Can’t resolve ‘core-js/modules/es.array.concat.js’”通常是因为你的项目中使用了core-js库,但是你的项目配置或者core-js的版本不支持你正在尝试使用的功能。下面是一些解决这个问题的步骤: 确认core-js版本 …

Windows10中设置多个虚拟IP方法

一.netsh 命令添加(最直接、最简单) 1.在 Windows 10 中,使用 netsh 命令为现有物理网卡或虚拟网卡添加额外的 IP 地址(IP Alias)是最直接的方法。这些 IP 地址与主 IP 在同一网段,共享同一张网卡的 MAC 地…

回答 如何通过inode client的SSLVPN登录之后,访问需要通过域名才能打开的服务

需要dns代理 1 配置需求或说明 1.1 适用的产品系列 本案例适用于软件平台为Comware V7系列防火墙:本案例适用于如F5080、F5060、F5030、F5000-M等F5000、F5000-X系列的防火墙。 注:本案例是在F100-C-G2的Version 7.1.064, Release 9510P08版本上进行…

Jenkins通过Pipeline流水线方式编译前端项目

本文记录了本人在前端项目持续集成与自动化部署方面的实践经验,使用 Jenkins 官方 jenkins:lts 镜像为基础,构建支持 Node.js 构建和压缩能力的运行环境,并通过声明式 Pipeline 实现一套多环境(SIT/PROD)可选的一键部署…