蒙蒙plus
蒙蒙plus
Published on 2025-09-04 / 11 Visits
0
0

IAR 8 自动构建工作流使用文档

RT-Thread IAR 8 自动构建工作流使用文档

📋 概述

这个工作流(build-iar8.yml)是一个自动化构建系统,用于编译 RT-Thread 库文件并自动发布。它会:

  • 🔨 自动编译 IAR 项目
  • 📦 打包生成的文件
  • 🏷️ 创建版本标签
  • 📤 发布到 Gitea
  • 🌿 创建发布分支

🚀 快速开始

触发方式

工作流会在以下情况下自动运行:

  1. 推送标签:当你推送以 v 开头的标签时(如 v1.0.0
  2. 推送分支:当你推送到 masterrelease 分支时
  3. 手动触发:在 Gitea 的 Actions 页面手动运行

版本命名规则

  • 正式版本:使用标签触发,版本号就是标签名(如 v1.0.01.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-版本号.aRTOS_Debug-版本号.a
  • 头文件os_Lib.h
  • 配置文件PORT-Config/PORT-RTOS2/
  • CMSIS 文件CMSIS-RTOS2/

发布包

  • 包名格式rt-thread-lib-版本号.zip
  • 包含内容:所有构建产物和必要文件

🏷️ 版本和标签

版本号规则

  • 正式版本1.0.02.1.3
  • 夜间构建nightly-20250115

标签覆盖

当同一天多次提交时,工作流会:

  1. 自动删除旧的同名标签
  2. 创建新的标签指向最新提交
  3. 更新发布信息

🌿 分支管理

自动创建的分支

  • 分支名格式release/rt-thread-lib-版本号
  • 分支内容:包含所有构建产物的完整文件结构
  • 覆盖策略:如果分支已存在,会强制覆盖

🔧 故障排除

常见问题

  1. IAR 未找到

    • 检查 IAR_VERSION 配置是否正确
    • 确认 IAR 已正确安装
    • 检查环境变量 IAR_SYSTEMS 是否设置
  2. 文件未找到

    • 检查 SOURCE_FILE_PATTERN 是否正确
    • 确认源文件存在于预期位置
    • 检查 PACKAGE_FILES 配置
  3. 权限错误

    • 确认有推送权限
    • 检查 Gitea Token 是否有效
    • 确认仓库设置允许 Actions 写入

调试技巧

  1. 查看日志:在 Gitea Actions 页面查看详细日志
  2. 检查工件:下载构建工件检查内容
  3. 验证配置:确认所有配置项都正确设置

📝 使用示例

创建正式版本

# 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

📞 获取帮助

如果遇到问题:

  1. 查看工作流日志中的错误信息
  2. 检查配置文件是否正确
  3. 确认所有依赖都已正确安装
  4. 参考本文档的故障排除部分

注意:这个工作流专为 RT-Thread 项目设计,使用前请确保你的项目结构符合预期。


Comment