RT-Thread IAR 8 自动构建工作流使用文档
📋 概述
这个工作流(build-iar8.yml)是一个自动化构建系统,用于编译 RT-Thread 库文件并自动发布。它会:
- 🔨 自动编译 IAR 项目
- 📦 打包生成的文件
- 🏷️ 创建版本标签
- 📤 发布到 Gitea
- 🌿 创建发布分支
🚀 快速开始
触发方式
工作流会在以下情况下自动运行:
- 推送标签:当你推送以
v开头的标签时(如v1.0.0) - 推送分支:当你推送到
master或release分支时 - 手动触发:在 Gitea 的 Actions 页面手动运行
版本命名规则
- 正式版本:使用标签触发,版本号就是标签名(如
v1.0.0→1.0.0) - 夜间构建:使用分支触发,版本号格式为
nightly-YYYYMMDD(如nightly-20250115)
⚙️ 配置说明
主要配置项
在文件顶部的 env 部分,你可以修改以下配置:
env:
# IAR 项目配置
IAR_PROJECT_PATH: "OS_Lib/Project_IAR_8.4/RTOS.ewp" # IAR 项目文件路径
IAR_BUILD_CONFIGS: "Debug,Release" # 构建配置
IAR_VERSION: "8.3" # IAR 版本号
# 文件配置
SOURCE_FILE_PATTERN: "RTOS*.a" # 源文件匹配模式
PACKAGE_FILES: "CMSIS-RTOS2,os_Lib.h,PORT-Config,PORT-RTOS2,*.a" # 要打包的文件
PACKAGE_NAME_PREFIX: "rt-thread-lib" # 包名前缀
# 其他配置
ARTIFACT_RETENTION_DAYS: 1 # 工件保留天数
NIGHTLY_VERSION_PREFIX: "nightly" # 夜间构建前缀
配置项详解
| 配置项 | 说明 | 示例 |
|---|---|---|
IAR_PROJECT_PATH |
IAR 项目文件的相对路径 | "OS_Lib/Project_IAR_8.4/RTOS.ewp" |
IAR_BUILD_CONFIGS |
要构建的配置,用逗号分隔 | "Debug,Release" |
IAR_VERSION |
IAR 版本号,用于查找 IAR 安装路径 | "8.3" |
SOURCE_FILE_PATTERN |
源文件匹配模式,支持通配符 | "RTOS*.a" |
PACKAGE_FILES |
要打包的文件和目录,用逗号分隔 | "CMSIS-RTOS2,os_Lib.h,*.a" |
PACKAGE_NAME_PREFIX |
生成的包名前缀 | "rt-thread-lib" |
🔄 工作流程
1. 构建阶段(library-build)
- 环境设置:自动查找 IAR 安装路径
- 项目编译:使用 IAR 编译指定的配置
- 文件处理:重命名生成的文件,添加版本信息
- 目录整理:复制必要的文件到根目录
- 打包:创建 ZIP 压缩包
2. 分支创建(unpack-and-commit)
- 下载工件:下载构建阶段生成的压缩包
- 解压文件:将文件解压到根目录
- 创建分支:创建名为
release/包名的新分支 - 提交推送:提交所有文件并推送到远程
3. 发布阶段(create-release)
- 标签处理:检查并删除已存在的同名标签
- 生成内容:创建发布说明
- 创建发布:在 Gitea 上创建发布和上传文件
📁 生成的文件
构建产物
- 库文件:
RTOS-版本号.a、RTOS_Debug-版本号.a - 头文件:
os_Lib.h - 配置文件:
PORT-Config/、PORT-RTOS2/ - CMSIS 文件:
CMSIS-RTOS2/
发布包
- 包名格式:
rt-thread-lib-版本号.zip - 包含内容:所有构建产物和必要文件
🏷️ 版本和标签
版本号规则
- 正式版本:
1.0.0、2.1.3等 - 夜间构建:
nightly-20250115等
标签覆盖
当同一天多次提交时,工作流会:
- 自动删除旧的同名标签
- 创建新的标签指向最新提交
- 更新发布信息
🌿 分支管理
自动创建的分支
- 分支名格式:
release/rt-thread-lib-版本号 - 分支内容:包含所有构建产物的完整文件结构
- 覆盖策略:如果分支已存在,会强制覆盖
🔧 故障排除
常见问题
-
IAR 未找到
- 检查
IAR_VERSION配置是否正确 - 确认 IAR 已正确安装
- 检查环境变量
IAR_SYSTEMS是否设置
- 检查
-
文件未找到
- 检查
SOURCE_FILE_PATTERN是否正确 - 确认源文件存在于预期位置
- 检查
PACKAGE_FILES配置
- 检查
-
权限错误
- 确认有推送权限
- 检查 Gitea Token 是否有效
- 确认仓库设置允许 Actions 写入
调试技巧
- 查看日志:在 Gitea Actions 页面查看详细日志
- 检查工件:下载构建工件检查内容
- 验证配置:确认所有配置项都正确设置
📝 使用示例
创建正式版本
# 1. 创建并推送标签
git tag v1.0.0
git push origin v1.0.0
# 2. 工作流自动运行,生成:
# - 标签:v1.0.0
# - 发布:1.0.0
# - 包:rt-thread-lib-1.0.0.zip
# - 分支:release/rt-thread-lib-1.0.0
创建夜间构建
# 1. 推送到 master 分支
git push origin master
# 2. 工作流自动运行,生成:
# - 标签:nightly-20250115
# - 发布:Nightly Build nightly-20250115
# - 包:rt-thread-lib-nightly-20250115.zip
# - 分支:release/rt-thread-lib-nightly-20250115
🛠️ 自定义配置
修改构建配置
如果你需要构建不同的配置,修改 IAR_BUILD_CONFIGS:
IAR_BUILD_CONFIGS: "Debug,Release,Test" # 添加 Test 配置
修改包内容
如果你需要包含更多文件,修改 PACKAGE_FILES:
PACKAGE_FILES: "CMSIS-RTOS2,os_Lib.h,PORT-Config,PORT-RTOS2,*.a,README.md"
修改版本前缀
如果你想要不同的夜间构建前缀:
NIGHTLY_VERSION_PREFIX: "dev" # 改为 dev-20250115
📞 获取帮助
如果遇到问题:
- 查看工作流日志中的错误信息
- 检查配置文件是否正确
- 确认所有依赖都已正确安装
- 参考本文档的故障排除部分
注意:这个工作流专为 RT-Thread 项目设计,使用前请确保你的项目结构符合预期。