产品发布标准
- 概述
本产品包含一套软件和几款不同的硬件。
说明 | ||
硬件 | 硬件差异 | 架构(ARM32/ARM64) 操作系统和版本(文件系统和系统库) 内存 存储(持久和易失) 串口和网口的名称和数量 |
启动脚本 | 此脚本在硬件上电后自动执行,在适当的初始化后进入预设目录启动软件的启动命令,并监控启动命令,返回0表示计划性退出,无需额外操作,否则表示软件运行异常,硬件应重新启动 | |
软件 | 启动命令 | start.sh,工作路径为命令所在位置 |
start.sh | 按照软件需要配置系统然后启动软件系统并检测软件系统运行状态,在软件系统异常后返回非0值告知硬件(硬件启动脚本会触发硬件重启) | |
配置文件和数据库 | ||
固件和守护进程 | 启动时首先检测硬件型号并获取序列号(例如,在几个不同位置检索型号和序列号文件,期待其中一个位置能获取到),软件系统依据硬件型号使用不同的配置 | |
协议驱动 |
发布涉及到下列内容:
说明 | ||
发布 | 打包脚本 | 用来构建发布目录和发布包 |
发布目录 | 按照最终结构组织的软件系统 | |
发布包 | 发布目录的打包 | |
安装脚本 | 用来从发布包安装系统 |
- 源码组织、编译、打包
- 组织
源码分为如下几个部分:
依赖 | 说明 | |
start.sh | 一般总是兼容的 | |
配置文件和数据库 | 原则上不升级,由程序动态处理 | |
固件 | ||
协议 | ||
驱动 |
-
- 编译
- 三个不同架构版本
- 编译
源码需要编译为三个不同的版本:
版本 | 用途 | 编译环境 |
X86-64 | 虚拟机开发和测试 | 虚拟机环境 |
ARM32 | Libc版本: libc++版本: openssl版本: | |
ARM64 | Libc版本: libc++版本: openssl版本: |
拉取源码后对每个版本分别使用编译脚本一次性全量编译,如果编译成功自动执行打包脚本。
-
-
- 编译脚本
-
编译脚本要求:
步骤 | 说明 | |
1 | 删除并重建目录 | 确保全新构建 |
2 | 指定版本拉取源码 | 必须是明确的版本,不能是最新版 |
3 | 清理源码中多余的部分 | 如不同位置的相同头文件、为了方便而入库的编译输出,必须确保完整编译 |
4 | 编译 | 注意检查依赖的库,确保编译时使用的库的位置符合预期 |
5 | 检查结果 | 检查预期的文件是否生成、格式是否正确(x86-64/arm32/arm64) |
注意,必须是单一脚本实现。除了版本参数外不需要其他参数,不能依赖手工设置环境变量,必须全部在脚本内设置。
-
-
- 打包脚本
-
编译成功后进行打包,打包脚本要求:
步骤 | 说明 | |
1 | 按照最终目录结构重建目录 | 确保全新构建 |
2 | 从编译输出中逐个复制文件 | 注意不同架构的文件可能是不一样的 |
3 | 生成最终发布包 | 压缩包或特定的某种格式的包 |
4 | 检查和报告结果 | 报告文件数、大小、格式 |
注意,必须是单一脚本实现。
-
-
- 安装脚本
-
安装脚本从打包好的发布包解压包并对文件属性作必要的修改。
注意:非常不建议对硬件做超出软件目录本身的修改。非常不建议对系统做修改。意即,复制目录然后就能运行,删除目录就算还原。
- 部署和升级
- 出厂
出厂部署由厂家完成,厂家将软件包放置在硬件的指定位置,并在硬件的启动脚本最后执行软件包里的start.sh。
-
- 手工部署
复制发布目录到指定位置或更新部分文件,根据安装脚本修改文件属性。
-
- 插件升级
升级从操作界面进行。