news 2026/7/13 2:33:54

STM32_gitea workflow

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32_gitea workflow

目录

  • 简介
  • 使用Dockerfile构建docker镜像
  • 配置gitea和act runner
  • workflow
  • 数据传递
      • 编译产物
      • USB设备
  • ACT Runner 的默认配置
  • docker 源问题解决

简介

实现STM32 开发的自动烧录动作,每一次git push向私有仓库推送之后,仓库会触发act runner 活动,act runner 会拉取最新代码,启动工具链的docker做编译和烧录。

使用Dockerfile构建docker镜像

dockerfile用于创建虚拟机镜像,这里主要是安装一些软件。做好之后后面自动化的时候就不用每次都临时安装,费时费力。
这个镜像做好之后,每次编译都会再这个镜像中做。

# 拉取基础镜像 FROM ubuntu:24.04 # 软件源先设置为HTTP,下载ca-certificates,解决HTTPS证书问题 RUN sed -i 's|https://|http://|g' /etc/apt/sources.list.d/ubuntu.sources && \ sed -i 's|http://archive.ubuntu.com|http://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list.d/ubuntu.sources && \ sed -i 's|http://security.ubuntu.com|http://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list.d/ubuntu.sources RUN apt-get update && \ apt-get install -y ca-certificates # 将软件源恢复为 HTTPS,并安装编译工具 RUN sed -i 's|http://mirrors.tuna.tsinghua.edu.cn|https://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list.d/ubuntu.sources RUN apt-get update && \ apt-get install -y cmake make git build-essential gcc-arm-none-eabi usbutils\ openocd binutils-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib # 清空软件包缓存 RUN rm -rf /var/lib/apt/lists/*

如果出现了如下两种报错,都是正常的

# 构建过程没有终端,会报如下错误 debconf: delaying package configuration, since apt-utils is not installed man-db 没装, 没有影响 update-alternatives: warning: skip creation of /usr/share/man/man1/fakeroot.1.gz...

配置gitea和act runner

act runner 是gitea的包工头。每次触发工作流之后,gitea都会找到act runner,让它把活干了。
这两者的绑定是通过TOKEN来做的
gitea里创建runner

act runner 的docker 创建的时候将docker传递过去

这样runner就做好了

workflow

.gitea/workflows/build.yml

name: STM32 Build and Flash on: push: branches: [main, master] workflow_dispatch: jobs: build-and-flash: runs-on: ubuntu-latest container: image: ubuntu-dev volumes: - /dev:/dev:rw - /dev_result:/dev_result:rw options: --privileged steps: - name: Clone run: | rm -rf /dev_result/STM32F4 git clone http://token:${{ secrets.GITEA_TOKEN }}@192.168.4.41:3000/wwl/STM32F4.git /dev_result/STM32F4 - name: Debug USB run: | ls -la /dev/stlink ls -la /dev/bus/usb/* lsusb 2>/dev/null || echo "no lsusb" - name: Build and flash run: | cd /dev_result/STM32F4 make clean && make -j4 openocd -f interface/stlink.cfg -f target/stm32f0x.cfg \ -c "transport select hla_swd" \ -c "program build/STM32F070.hex verify reset exit"

数据传递

编译产物

编译产物位于宿主机路径/dev_result, 这个路径首先要传递给act runner, 编排(compose)里要做这样一个文件夹映射

之后,runner 再启动 job container, 再传递给 ubuntu-dev

这样,克隆,编译才能用到这个文件夹。

USB设备

宿主机接STlink做烧录,追踪USB的号码是动态变化的,为了下一次插拔STlink设备流程还能正常运行,需要使用udev绑定
udev的工作原理是,将符合条件的USB设备做软链接,从而得到一个统一的入口。
宿主机上做:

mkdir -p /etc/udev/rules.d cat > /etc/udev/rules.d/50-stlink.rules << 'EOF' SUBSYSTEM=="usb", ATTR{idVendor}=="0483", ATTR{idProduct}=="374b", SYMLINK+="stlink", MODE="0666" EOF udevadm control --reload-rules udevadm trigger

idVendor 0483 和 idProduct 374b 是过滤标识,可以通过lsusb获得。 SYMLINK 指定链接后的名字

root@i5-8600T:/etc/udev/rules.d# lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 014: ID 0483:374b STMicroelectronics ST-LINK/V2.1 Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub root@i5-8600T:/etc/udev/rules.d# ls -la /dev/stlink lrwxrwxrwx 1 root root 15 Jul 11 23:11 /dev/stlink -> bus/usb/001/014

USB设备也是要再docker中传递的,ACT runner中 编排和workfllow 中都要指定,与/dev_result同理。

ACT Runner 的默认配置

ACT Runner 默认所有volume 传递失效,默认重头拉镜像,很难用,最好自己做一次配置。

在 actrunner 上执行

act_runner generate-config > /dev_result/config.yaml

config.yaml 打开,修改如下


这个文件我们是在/dev_result文件夹上做的,是映射的宿主机路径,所以这个文件不会随着docker删除或者关闭而消失。
修改act runner环境变量,指定CONFIG 文件路径,然后重启即可解决上述问题

docker 源问题解决

https://wkdaily.cpolar.top/archives/gc

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/13 2:30:02

医疗信息化国产化

摘要&#xff1a;医疗信息化国产化已从试点探索走向全院全栈落地&#xff0c;多院区协同、医疗数据高可用、诊疗业务不间断是大型三甲医院信创改造的核心难题。本文以北京积水潭医院贵州医院&#xff08;贵州省首家国家区域医疗中心&#xff09;双院区全栈国产化项目为核心案例…

作者头像 李华
网站建设 2026/7/13 2:29:45

WinHance:免费开源Windows系统优化工具使用指南

Windows系统用久了难免出现卡顿、启动慢、响应迟缓等问题&#xff0c;很多用户的第一反应就是重装系统。但重装系统耗时耗力&#xff0c;还要重新安装各种软件和配置环境。其实通过专业的系统优化工具&#xff0c;往往能让Windows系统焕然一新&#xff0c;今天就为大家详细介绍…

作者头像 李华
网站建设 2026/7/13 2:22:01

Qt 6.5 SVG图片显示与交互:实现缩放/拖拽查看器的3个核心步骤

Qt 6.5 SVG图片显示与交互&#xff1a;实现缩放/拖拽查看器的3个核心步骤矢量图形在现代UI设计中扮演着重要角色&#xff0c;而SVG作为可缩放矢量图形的标准格式&#xff0c;在Qt应用开发中具有独特优势。本文将深入探讨如何利用Qt 6.5构建一个功能完善的SVG查看器&#xff0c;…

作者头像 李华
网站建设 2026/7/13 2:20:28

SAP PS/SD 集成配置:3步实现VL01N基于销售订单的项目交货

SAP PS/SD集成实战&#xff1a;基于销售订单的项目交货配置全解析在SAP项目实施过程中&#xff0c;项目系统(PS)与销售分销(SD)模块的集成一直是企业业务流程优化的关键环节。特别是对于销售型项目而言&#xff0c;如何实现项目物料基于销售订单的精准交货&#xff0c;直接关系…

作者头像 李华
网站建设 2026/7/13 2:18:23

AI画布技术解析:基于Three.js与Stable Diffusion的室内设计系统实现

在实际室内设计和建筑可视化项目中&#xff0c;传统工作流往往需要在建模软件、渲染引擎和后期工具之间反复切换&#xff0c;不仅效率低下&#xff0c;而且修改成本高昂。DVStudio 提出的“自研AI画布”概念&#xff0c;正是为了解决这一痛点——它试图将设计生成、空间布局、材…

作者头像 李华