..

关于构建流程恢复的思考

本文章是在完善https://github.com/shecannotsee/sheer_third_party库时候引发的思考。

背景

对于https://github.com/shecannotsee/sheer_third_party/commit/a0ecb031847771194f0090815b7c7609d009d27a的提交, 发现可以按照流程进行构建, 并且可以将流程划分为多个步骤:

  1. 检查当前工作路径
  2. 检查某些目录是否存在(要在该目录下进行库的拉取)
  3. 从github上拉取库
  4. 切换库分支
  5. 进入库并且创建build目录
  6. cmake构建
  7. make和make install进行编译和安装

问题描述

对于一些稍微大型一点的库, 可能会在中间某些步骤进行终端, 或者是因为一些其他的网络或者意外发生, 导致进行到某一个步骤便无法进行下去。如果每次都重新来在小规模场景下是可以接受的, 但是到大规模场景下所消耗的时间是无法接受的。所以引申出一个新的功能: 对操作步骤进行记录, 然后恢复步骤进行执行。

记录功能

  1. 对步骤进行记录: 当前步骤用到了哪些数据, 哪些数据是步骤特有的, 哪些数据是全局的; 步骤是否完成; 下一个步骤、上一个步骤是什么(可能不需要, 如果不需要的话会依赖数组来表示步骤顺序);
  2. 通过哪种格式的文件来记录(json, ini或者是其他?)

记录数据

  • 步骤名称
  • 是否执行成功
  • 执行本步骤所必须的数据

整个流程如下

  1. 对于构建流程, 需要对json文件传入一组步骤, 用来校对整体的构建步骤。也就是说构造这个记录步骤的功能时, 需要传入一个json文件路径以及步骤列表。
  2. 根据传入的步骤列表, 在json中查询, 找到步骤后查询是否执行成功, 然后找到第一个没有执行成功的步骤。
  3. 进入步骤, 获取上下文, 执行步骤以及后续步骤。
  4. 步骤执行后需要更新json文件, 更新执行成功以及下一个步骤所需要的上下文, 直到没有步骤能够执行。