🚀 CI/CD 全流程全解
一篇适合设备端开发者、嵌入式工程师、新手工程师的保姆级教程,涵盖从 GitLab CI/CD 搭建到边缘设备部署。
🧠 目录
- [CI/CD 简介](#CI/CD 简介)
- 环境准备
- [创建
.gitlab-ci.yml
](#创建 .gitlab-ci.yml) - 自定义编译脚本
- [部署配置 SSH 密钥](#部署配置 SSH 密钥)
- 流程示意图
- 调试技巧
- 实际应用场景
CI/CD 简介
缩写 | 全称 | 作用 |
---|---|---|
CI | Continuous Integration | 自动编译、测试 |
CD | Continuous Deployment | 自动部署、上线 |
环境准备
✅ 安装 GitLab Runner
bash
sudo apt install gitlab-runner
sudo gitlab-runner register
注册信息填写示例:
GitLab URL: https://gitlab.com
Token: <项目Token>
描述: edge-runner
执行器: shell
创建 .gitlab-ci.yml
在项目根目录新建:
yaml
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/* [email protected]:/opt/heahu/
- ssh [email protected] 'systemctl restart heahu.service'
自定义编译脚本
scripts/build_rk3588.sh
bash
#!/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 密钥
bash
ssh-keygen -t rsa -f deploy_key
将公钥添加到设备 ~/.ssh/authorized_keys
私钥添加到 GitLab 的变量:
变量名 | 值 |
---|---|
SSH_PRIVATE_KEY |
deploy_key 内容 |
.gitlab-ci.yml
添加:
yaml
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
流程示意图
plaintext
GitLab 提交代码
↓
CI Runner 编译构建
↓
打包产物
↓
部署到设备
↓
自动重启服务
调试技巧
- GitLab -> CI/CD -> Pipelines -> 查看日志
- 构建失败时添加
echo
输出诊断信息 - 确保 Runner 有权限连接设备
实际应用场景
场景 | 示例 |
---|---|
模型更新 | 提交新 .rknn 自动替换部署 |
OTA 升级 | 提交代码后自动部署 |
一键测试 | 本地提交触发部署设备 |
如果你还需要 VSCode + GitLab 使用教程、边缘设备系统初始化脚本、部署模型自动更新流程等,欢迎关注后续内容。