当前位置: 首页 > news >正文

【GitLab CI/CD 实践】从 0 到 1 搭建高效自动化部署流程

在这里插入图片描述

网罗开发 (小红书、快手、视频号同名)

  大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。

图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:极星会首批签约作者


文章目录

    • 摘要
    • 引言
    • GitLab CI/CD 基本概念
    • 配置 .gitlab-ci.yml
    • GitLab Runner 的使用
      • 安装 Runner(Linux 示例)
      • 注册 Runner
    • 使用 Artifacts 进行构件管理
    • QA 环节
    • 总结
    • 参考资料

摘要

GitLab CI/CD 是 GitLab 内置的持续集成和持续部署(CI/CD)工具,它可以帮助开发团队自动化代码测试、构建和部署。本指南将介绍如何使用 GitLab CI/CD 搭建完整的自动化部署流程,包括 .gitlab-ci.yml 配置文件的编写、Stages、Jobs、Artifacts 以及 Runner 的使用。

引言

在现代软件开发中,自动化部署成为提高开发效率和稳定性的关键环节。相比 GitHub Actions 和 Jenkins,GitLab CI/CD 具有与 GitLab 无缝集成的优势,但许多开发者仍然对其使用方式不太熟悉。本指南将提供详细的讲解和示例代码,帮助开发团队高效使用 GitLab CI/CD。

GitLab CI/CD 基本概念

  • Pipeline:GitLab CI/CD 的核心,由多个 Stage 组成。
  • Stage:定义 CI/CD 的不同阶段,如 buildtestdeploy
  • Job:具体执行的任务,例如编译代码或运行测试。
  • Runner:GitLab CI/CD 运行 Job 的环境,可以是共享 Runner 或自托管 Runner。

配置 .gitlab-ci.yml

.gitlab-ci.yml 是 GitLab CI/CD 的核心配置文件,以下是一个基本的 .gitlab-ci.yml 示例:

stages:- build- test- deployjob_build:stage: buildscript:- echo "Building the application..."- mvn packageartifacts:paths:- target/*.jarjob_test:stage: testscript:- echo "Running tests..."- mvn testjob_deploy:stage: deployscript:- echo "Deploying the application..."- scp target/*.jar user@server:/deploy/path

解析:

  • stages 定义了 CI/CD 流程的阶段(buildtestdeploy)。
  • job_build 任务构建应用,并保存 target/*.jar 产物(Artifacts)。
  • job_test 任务执行单元测试,确保代码质量。
  • job_deploy 任务自动化部署,将产物上传至服务器。

GitLab Runner 的使用

GitLab CI/CD 依赖 Runner 执行 Job,可以使用 GitLab 提供的共享 Runner,或者自己托管 Runner。

安装 Runner(Linux 示例)

curl -L --output gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
chmod +x gitlab-runner
sudo mv gitlab-runner /usr/local/bin/
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start

注册 Runner

sudo gitlab-runner register \--url https://gitlab.com/ \--registration-token YOUR_TOKEN \--executor shell \--description "My Runner" \--tag-list "ci,deploy" \--run-untagged=false \--locked=false

说明:

  • --executor shell 选择 Shell 作为执行环境(可换为 dockerkubernetes)。
  • --tag-list "ci,deploy" 设定 Runner 适用的 CI/CD 任务。

使用 Artifacts 进行构件管理

Artifacts 用于存储和共享 Job 产生的文件,例如构建产物。

artifacts:paths:- target/*.jarexpire_in: 1 hour
  • paths:指定要保存的文件路径。
  • expire_in:设置过期时间,默认 30 天。

QA 环节

Q1: GitLab CI/CD 和 Jenkins 有什么区别?

  • GitLab CI/CD 集成在 GitLab 中,使用 YAML 文件配置,而 Jenkins 需要单独安装和维护。

Q2: 如何在 GitLab CI/CD 中使用环境变量?

  • 可以在 GitLab 项目的 Settings > CI/CD > Variables 添加环境变量,然后在 .gitlab-ci.yml 文件中使用 $VAR_NAME

总结

GitLab CI/CD 提供了一种高效的自动化部署方式,能够帮助团队提高开发效率和代码质量。本文介绍了 GitLab CI/CD 的基本概念、.gitlab-ci.yml 配置、Runner 的使用以及 Artifacts 处理方式。

未来,我们可以进一步探索 GitLab CI/CD 的进阶功能,如:

  • 使用 Docker 进行容器化部署
  • 结合 Kubernetes 进行自动化运维
  • 监控和优化 CI/CD 运行效率

参考资料

  • GitLab 官方文档
  • GitLab CI/CD 示例

相关文章:

【GitLab CI/CD 实践】从 0 到 1 搭建高效自动化部署流程

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...

【DeepSeek-R1训练笔记】随手记录一些训练log

背景说明 DeepSeek系列解读请移步我的上一篇blog:【完整版】DeepSeek-R1大模型学习笔记(架构、训练、Infra)代码仓库【科大的大四老哥太太太太太值得倾佩了】:https://github.com/Unakar/Logic-RLDeepSeek-R1-Zero复现文档&#…...

【自开发工具介绍】SQLSERVER的ImpDp和ExpDp工具04

SQLSERVER的ImpDp和ExpDp工具演示 1、指定某些表作为导出对象外 (-exclude_table) 验证用:导出的表,导入到新的数据库 2、指定某些表作为导出对象外 (-exclude_table) 支持模糊检索,可以使用星号 以s开头的表作为导出对象外,…...

「全网最细 + 实战源码案例」设计模式——策略模式

核心思想 策略模式(Strategy Pattern)是一种行为型设计模式,用于定义一系列算法或策略,将它们封装成独立的类,并使它们可以相互替换,而不影响客户端的代码,提高代码的可维护性和扩展性。 结构 …...

[MoeCTF 2022]baby_file

题目 <html> <title>Heres a secret. Can you find it?</title> <?phpif(isset($_GET[file])){$file $_GET[file];include($file); }else{highlight_file(__FILE__); } ?> </html> 读取flag /?filephp://filter/readconvert.base64-encode…...

【AI日记】25.02.07 探索开辟第二战场

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】【AI应用】 探索 探索如何做视频博主一边坚持主攻方向&#xff08; 找工作&#xff0c;包括 AI 学习和 kaggle比赛&#xff09;&#xff0c;一边尝试开辟第二战场&#xff08;比如&#xff1a;视…...

path 路径模块

在开发基于 Node.js 的应用程序时&#xff0c;处理文件路径是一个常见的需求。为了简化这一过程并避免跨平台兼容性问题&#xff0c;Node.js 提供了 path 模块。该模块提供了一系列实用的方法来解析、格式化和操作文件路径。本文将详细介绍 path 模块的功能及其使用方法&#x…...

SpringBoot中的多环境配置管理

SpringBoot中的多环境配置管理 文章目录 SpringBoot中的多环境配置管理SpringBoot中的多环境配置管理 多环境配置的概述1. 为什么需要多环境配置&#xff1f;2. Spring Boot 中如何实现多环境配置&#xff1f;3. 多环境配置的应用场景4. 如何实现配置隔离&#xff1f; Spring B…...

mac下生成.icns图标

笔记原因&#xff1a; 今日需要在mac下开发涉及图标文件的使用及icons文件的生成&#xff0c;所以记录一下。 网络上都是一堆命令行需要打印太麻烦了&#xff0c;写一个一键脚本。 步骤一 将需要生成的png格式文件重命名为“pic.png” mv xxxx.png pic.png 步骤二 下载我…...

关于JS继承的七种方式和理解

1.原型链继承 function Fun1() {this.name parentthis.play [1, 2, 3] } function Fun2() {this.type child }Fun2.prototype new Fun1()let s1 new Fun2() let s2 new Fun2() s1.play.push(4) console.log(s1.play, s2.play) // [1, 2, 3, 4] [1, 2, 3, 4]可以看到两个…...

储能系统-系统架构

已更新系列文章包括104、61850、modbus 、单片机等&#xff0c;欢迎关注 IEC61850实现方案和测试-1-CSDN博客 快速了解104协议-CSDN博客 104调试工具2_104协议调试工具-CSDN博客 1 电池储能系统&#xff08;BESS&#xff09; 架构 电池储能系统主要包括、电池、pcs、本地控制…...

AI智算-k8s部署DeepSeek Janus-Pro-7B 多模态大模型

文章目录 简介环境依赖模型下载下载Janus库GPU环境镜像模型manifest调用Janus多模态文生图 简介 DeepSeek Janus Pro 作为一款强大的多模态理解与生成框架&#xff0c;正在成为研究人员和开发者的热门选择。本文将详细介绍如何在云原生k8s环境中部署配置和使用 DeepSeek Janus…...

【截图】selenium自动通过浏览器截取指定元素div的图片

【截图】selenium自动通过浏览器截取指定元素div的图片 思路 截取完整网页截图 通过元素的坐标 截图到指定位置的图片 前提是已经获取到 driver 了 # 定位目标divtarget_div driver.find_element(By.CLASS_NAME, headlines-right)# 获取div的位置和大小location target_div…...

如何导入第三方sdk | 引入第三方jar 包

0. 背景1. 上传私有仓库2. 使用本地文件系统 0. 背景 对接一些第三方功能&#xff0c;会拿到第三方的sdk&#xff0c;也就是jar包&#xff0c;如何导入呢 1. 上传私有仓库 最好的方式就是将第三方jar包&#xff0c;上传到私有的仓库&#xff0c;这样直接正常在pom引用即可如果只…...

HarmonyOS 5.0应用开发——ContentSlot的使用

【高心星出品】 文章目录 ContentSlot的使用使用方法案例运行结果 完整代码 ContentSlot的使用 用于渲染并管理Native层使用C-API创建的组件同时也支持ArkTS创建的NodeContent对象。 支持混合模式开发&#xff0c;当容器是ArkTS组件&#xff0c;子组件在Native侧创建时&#…...

C#常用集合优缺点对比

先上结论&#xff1a; 在C#中&#xff0c;链表、一维数组、字典、List<T>和ArrayList是常见的数据集合类型&#xff0c;它们各有优缺点&#xff0c;适用于不同的场景。以下是它们的比较&#xff1a; 1. 一维数组 (T[]) 优点&#xff1a; 性能高&#xff1a;数组在内存中…...

基于CLIP视觉语言大模型的行人重识别方法的简单框架设计

以下是一个基于CLIP视觉语言大模型的行人重识别方法的简单框架设计&#xff0c;用于数据集测试。我们将使用torch和clip库&#xff0c;假设数据集是一个包含行人图像的文件夹结构&#xff0c;每个子文件夹代表一个行人身份。 步骤概述 安装必要的库加载CLIP模型定义数据集类提…...

RabbitMQ 从入门到精通:从工作模式到集群部署实战(三)

文章目录 使用CLI管理RabbitMQrabbitmqctlrabbitmq-queuesrabbitmq-diagnosticsrabbitmq-pluginsrabbitmq-streamsrabbitmq-upgraderabbitmqadmin 使用CLI管理RabbitMQ RabbitMQ CLI 工具需要安装兼容的 Erlang/OTP版本。 这些工具假定系统区域设置为 UTF-8&#xff08;例如en…...

BurpSuite抓包与HTTP基础

文章目录 前言一、BurpSuite1.BurpSuite简介2.BurpSuite安装教程(1)BurpSuite安装与激活(2)安装 https 证书 3.BurpSuite使用4.BurpSuite资料 二、图解HTTP1.HTTP基础知识2.HTTP客户端请求消息3.HTTP服务端响应消息4.HTTP部分请求方法理解5.HTTPS与HTTP 总结 前言 在网络安全和…...

SQL Server 数据库迁移到 MySQL 的完整指南

文章目录 引言一、迁移前的准备工作1.1 确定迁移范围1.2 评估兼容性1.3 备份数据 二、迁移工具的选择2.1 使用 MySQL Workbench2.2 使用第三方工具2.3 手动迁移 三、迁移步骤3.1 导出 SQL Server 数据库结构3.2 转换数据类型和语法3.3 导入 MySQL 数据库3.4 迁移数据3.5 迁移存…...

嵌入式系统代码执行时间测量方法与优化

1. 嵌入式程序运行时间测量的必要性在嵌入式系统开发中&#xff0c;精确测量代码执行时间是每个工程师必备的技能。无论是优化算法效率、调试实时系统&#xff0c;还是验证硬件性能&#xff0c;时间测量都扮演着关键角色。以STM32为例&#xff0c;当我们需要确认一个延时函数是…...

DFRobot URM07超声波传感器UART通信与温度补偿详解

1. DFRobot URM07超声波测距传感器技术深度解析1.1 产品定位与工程价值DFRobot URM07&#xff08;SKU: SEN0153&#xff09;是一款面向嵌入式系统设计的工业级超声波距离传感器模块&#xff0c;其核心价值在于将高精度测距、环境温度补偿、超低功耗与UART标准化接口四者深度融合…...

3大核心优势!猫抓视频捕获工具让流媒体解析效率提升100%

3大核心优势&#xff01;猫抓视频捕获工具让流媒体解析效率提升100% 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓浏览器扩展是一款专业的网…...

SDXL 1.0电影级绘图工坊:RTX 4090专属,5分钟零基础部署教程

SDXL 1.0电影级绘图工坊&#xff1a;RTX 4090专属&#xff0c;5分钟零基础部署教程 1. 为什么选择SDXL 1.0电影级绘图工坊 如果你正在寻找一款能在RTX 4090上发挥极致性能的AI绘图工具&#xff0c;SDXL 1.0电影级绘图工坊绝对是你的不二之选。这款工具专为4090显卡优化&#…...

开源新形态:从代码到Prompt的转变

【导语&#xff1a;3月末&#xff0c;开源作者yetone发布新项目voice-input-src&#xff0c;以独特方式“开源”&#xff0c;即用自然语言Prompt生成代码&#xff0c;此做法引发讨论&#xff0c;或预示开源模式新转变。】AI驱动的语音输入法开源项目开源作者yetone在GitHub上发…...

暗黑破坏神2存档修改实用教程:从入门到精通的d2s编辑器全攻略

暗黑破坏神2存档修改实用教程&#xff1a;从入门到精通的d2s编辑器全攻略 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor d2s-editor是一款专为《暗黑破坏神2》玩家打造的开源存档编辑工具&#xff0c;支持角色属性调整、物品管…...

续航提升40%?EnergyStarX让Windows 11设备电量焦虑成为历史

续航提升40%&#xff1f;EnergyStarX让Windows 11设备电量焦虑成为历史 【免费下载链接】EnergyStarX &#x1f50b; Improve your Windows 11 devices battery life. A WinUI 3 GUI for https://github.com/imbushuo/EnergyStar. 项目地址: https://gitcode.com/gh_mirrors/…...

从理论到实践:基于状态观测器的闭环系统设计与MATLAB仿真

1. 当状态看不见时&#xff0c;我们如何控制一个系统&#xff1f; 想象一下你在驾驶一辆汽车&#xff0c;但仪表盘全部失灵——看不到车速、转速、油量&#xff0c;甚至连方向盘转角都不知道。这时候如果要保持车道&#xff0c;你会怎么做&#xff1f;这就是控制工程中经典的状…...

施密特触发器在智能家居中的7个隐藏用法:从空调变频到漏电保护

施密特触发器在智能家居中的7个隐藏用法&#xff1a;从空调变频到漏电保护 智能家居的普及让我们的生活更加便捷&#xff0c;但背后支撑这些设备的电子技术却鲜为人知。施密特触发器作为一种基础的电子元件&#xff0c;在智能家居系统中扮演着关键角色。它不仅能解决信号抖动问…...

HunyuanVideo-Foley 企业级架构设计:基于Agent的分布式音效生成调度系统

HunyuanVideo-Foley 企业级架构设计&#xff1a;基于Agent的分布式音效生成调度系统 1. 引言&#xff1a;音效生成的企业级挑战 想象一下这样的场景&#xff1a;一家大型视频平台每天需要为上万条视频自动生成匹配的音效。传统单机方案面临三大难题&#xff1a;生成速度跟不上…...