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

CI/CD 全流程全解

🚀 CI/CD 全流程全解

一篇适合设备端开发者、嵌入式工程师、新手工程师的保姆级教程,涵盖从 GitLab CI/CD 搭建到边缘设备部署。


🧠 目录

  1. CI/CD 简介
  2. 环境准备
  3. 创建 .gitlab-ci.yml
  4. 自定义编译脚本
  5. 部署配置 SSH 密钥
  6. 流程示意图
  7. 调试技巧
  8. 实际应用场景

CI/CD 简介

缩写全称作用
CIContinuous Integration自动编译、测试
CDContinuous Deployment自动部署、上线

环境准备

✅ 安装 GitLab Runner

sudo apt install gitlab-runner
sudo gitlab-runner register

注册信息填写示例:

GitLab URL: https://gitlab.com
Token: <项目Token>
描述: edge-runner
执行器: shell

创建 .gitlab-ci.yml

在项目根目录新建:

stages:
  - build
  - deploy

variables:
  PROJECT_DIR: "/build/project"

build:
  stage: build
  script:
    - echo "🔧 开始编译..."
    - mkdir -p $PROJECT_DIR
    - cp -r * $PROJECT_DIR
    - cd $PROJECT_DIR
    - bash scripts/build_rk3588.sh
  artifacts:
    paths:
      - $PROJECT_DIR/output/

deploy:
  stage: deploy
  script:
    - echo "🚀 开始部署..."
    - scp $PROJECT_DIR/output/* root@192.168.1.100:/opt/heahu/
    - ssh root@192.168.1.100 'systemctl restart heahu.service'

自定义编译脚本

scripts/build_rk3588.sh

#!/bin/bash
export TOOLCHAIN=/opt/toolchains/rk3588
export PATH=$TOOLCHAIN/bin:$PATH

mkdir -p output
arm-linux-gnueabihf-g++ -o output/main core/main.cpp
cp configs/*.yaml output/

部署配置 SSH 密钥

ssh-keygen -t rsa -f deploy_key

将公钥添加到设备 ~/.ssh/authorized_keys

私钥添加到 GitLab 的变量:

变量名
SSH_PRIVATE_KEYdeploy_key 内容

.gitlab-ci.yml 添加:

before_script:
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh
  - ssh-keyscan 192.168.1.100 >> ~/.ssh/known_hosts

流程示意图

GitLab 提交代码
      ↓
CI Runner 编译构建
      ↓
打包产物
      ↓
部署到设备
      ↓
自动重启服务

调试技巧

  • GitLab -> CI/CD -> Pipelines -> 查看日志
  • 构建失败时添加 echo 输出诊断信息
  • 确保 Runner 有权限连接设备

实际应用场景

场景示例
模型更新提交新 .rknn 自动替换部署
OTA 升级提交代码后自动部署
一键测试本地提交触发部署设备

如果你还需要 VSCode + GitLab 使用教程、边缘设备系统初始化脚本、部署模型自动更新流程等,欢迎关注后续内容。

相关文章:

  • 提升AI性能的秘密武器:量化、蒸馏与剪枝全面解析
  • conda、poetry,pip相关
  • 计算机网络进化论:从比特流到量子通信的深层解构
  • ZSL多个session
  • 软考笔记——计算机系统知识
  • 5.建造者模式
  • vSphere 克隆 Windows 虚拟机后无法访问文件共享的解决方案
  • Maven | 站在初学者的角度配置
  • vue3单独引用element-plus的Infinite Scroll无限滚动;vue3自定义指令
  • 一、Redis简介篇
  • 【操作系统安全】任务5:Windows 文件与文件系统
  • 解锁淘宝分类宝藏:深入探索“cat_get”接口的力量
  • vue3 elementUi table自由渲染组件
  • 使用computed计算属性实现购物车勾选
  • 【leetcode hot 100 105】从前序与中序遍历序列构造二叉树
  • 【从零开始】Air780EPM的LuatOS二次开发——OneWire协议调试注意事项!
  • C++之list类及模拟实现
  • 《C#上位机开发从门外到门内》3-5:基于FastAPI的Web上位机系统
  • 【NLP】 1. 文本在计算机里的表示: One-Hot, sparse vector, bag of words
  • MCU的应用场景:从智能家居到工业控制
  • 因雷雨、沙尘等天气,这些机场航班运行可能受影响
  • 首日5金!中国队夺得跳水世界杯总决赛混合团体冠军
  • 《水饺皇后》:命运如刀,她以饺子还击
  • A股2024年年报披露收官,四分之三公司盈利
  • 夜读丨春天要去动物园
  • 龚惠民已任江西省司法厅党组书记