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

embedded/2025/2/9 7:58:13/

在这里插入图片描述

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

  大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括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。

gitlabciyml_32">配置 .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 示例

http://www.ppmy.cn/embedded/160756.html

相关文章

USB枚举过程及Linux下U盘识别流程

USB枚举过程及Linux下U盘识别流程 USB枚举过程Linux 内核U盘识别流程打开内核动态输出时候的U盘插拔log内核工作队列检测HUB端口变化hub_event() 函数hub_port_connectUSB连接去抖枚举USB设备hub_port_initUSB接口与USB设备匹配USB接口驱动USB-STORAGE 接口驱动中USB 识别并添加…

(python)如何看自己安装的包的版本

linux pip list | grep "numpy\|scipy\|tensorflow\|keras"windows环境下 pip list | findstr "numpy scipy tensorflow keras"输出 numpy 1.13.1 scipy 0.19.1 tensorflow-cpu 2.4.0 tensorflow-estimator 2.4.0 tensorflow-gpu 2.4.0

javaEE-8.JVM(八股文系列)

目录 一.简介 二.JVM中的内存划分 JVM的内存划分图: 堆区:​编辑 栈区:​编辑 程序计数器:​编辑 元数据区:​编辑 经典笔试题: 三,JVM的类加载机制 1.加载: 2.验证: 3.准备: 4.解析: 5.初始化: 双亲委派模型 概念: JVM的类加…

oracle ORA-27054报错处理

现象 在oracle执行expdp,rman备份,xtts的时候,由于没有足够的本地空间,只能使用到NFS的文件系统但有时候会出现如下报错 ORA-27054: NFS file system where the file is created or resides is not mounted with correct options根据提示信…

【Linux系统】Linux中的用户级线程与内核级线程 / Windows中的线程实现TCB / 两系统的对比

1. Linux中的线程实现:用户级线程与内核级线程 a. 早期的Linux线程实现:轻量级进程(LWP) 历史背景:在Linux的早期版本中,线程的概念并没有直接支持。相反,Linux使用了一种称为轻量级进程&#x…

[渗透测试]热门搜索引擎推荐— — fofa篇

[渗透测试]热门搜索引擎推荐— — fofa篇 免责声明:本文仅用于分享渗透测试工具,大家使用时,一定需要遵守相关法律法规。 除了fofa,还有很多其他热门的,比如:shodan、奇安信的鹰图、钟馗之眼等,…

Vue 中的自定义指令是什么?如何使用?

在 Vue.js 中,自定义指令是一种允许开发者在 DOM 元素上添加特定行为的功能。自定义指令可以用来扩展 Vue 的功能,提供一些特定的 DOM 操作或行为,而不需要在组件中直接实现这些逻辑。 自定义指令的概念 自定义指令类似于 Vue 内置指令&…

第一节 docker基础之---安装

修改主机名: [rootlocalhost ~]# hostnamectl set-hostname docker [rootlocalhost ~]# bash [rootdocker ~]# 查看主机的内核版本(因为docker官方要求实在3.8以上) [rootdocker ~]# uname -a Linux docker 3.10.0-1160.el7.x86_64 #1 SMP…