..
关于构建流程恢复的思考
本文章是在完善https://github.com/shecannotsee/sheer_third_party库时候引发的思考。
背景
对于https://github.com/shecannotsee/sheer_third_party/commit/a0ecb031847771194f0090815b7c7609d009d27a的提交, 发现可以按照流程进行构建, 并且可以将流程划分为多个步骤:
- 检查当前工作路径
- 检查某些目录是否存在(要在该目录下进行库的拉取)
- 从github上拉取库
- 切换库分支
- 进入库并且创建build目录
- cmake构建
- make和make install进行编译和安装
问题描述
对于一些稍微大型一点的库, 可能会在中间某些步骤进行终端, 或者是因为一些其他的网络或者意外发生, 导致进行到某一个步骤便无法进行下去。如果每次都重新来在小规模场景下是可以接受的, 但是到大规模场景下所消耗的时间是无法接受的。所以引申出一个新的功能: 对操作步骤进行记录, 然后恢复步骤进行执行。
记录功能
- 对步骤进行记录: 当前步骤用到了哪些数据, 哪些数据是步骤特有的, 哪些数据是全局的; 步骤是否完成; 下一个步骤、上一个步骤是什么(可能不需要, 如果不需要的话会依赖数组来表示步骤顺序);
- 通过哪种格式的文件来记录(json, ini或者是其他?)
记录数据
- 步骤名称
- 是否执行成功
- 执行本步骤所必须的数据
整个流程如下
- 对于构建流程, 需要对json文件传入一组步骤, 用来校对整体的构建步骤。也就是说构造这个记录步骤的功能时, 需要传入一个json文件路径以及步骤列表。
- 根据传入的步骤列表, 在json中查询, 找到步骤后查询是否执行成功, 然后找到第一个没有执行成功的步骤。
- 进入步骤, 获取上下文, 执行步骤以及后续步骤。
- 步骤执行后需要更新json文件, 更新执行成功以及下一个步骤所需要的上下文, 直到没有步骤能够执行。