- 每次更新包版本时需要做 QA 测试。
- 我们的 QA 约束会越来越多。
- 虽然一个包上次合格,但这次不一定合格。
- 就算不发版,也要用新的 QA 约束回归测试。
- QA 不合格构成阻碍因素,合格前不再更新这个包的版本。
- 不合格的包要变得合格,要么找上游改,要么发行版打 patch。
- 极端情况下允许手动 bypass 测试,强行发版。
在打包现场之外,需要至少一台主机做回归测试。
我们需要一个进程(暂定名为 aoscpkgqad),它以系统服务的形式工作在一台主机上。这个进程负责完成以下任务:
- 周期性自动从 GitHub 拉取最新的 TREE。
- 周期性选择一个包,对它做一次构建,并将 log 留在特定目录。
其他进程配合下,达成以下效果:
- 当 log 里有 QA 警报信息(error or warning or something else)时,提交到某个地方,让打包侠们注意到。
- 一个包的 QA 警报信息可以在一定条件下被标记为「已解决」。
服务 aoscpkgqad 应当采用 Least Recently Rebuilt 原则找到一个包。
路径 /var/lib/aoscpkgqad/build-timestamp
样例:
extra-x11/xinit:0
extra-network/rsync:1643054134
路径样例:
/var/log/aoscpkgqad/pkg/extra-network/rsync/build.log
/var/log/aoscpkgqad/pkg/extra-x11/xinit/build.log
路径 /etc/aoscpkgqad/config
样例:
BUILD_SLEEP=600
配置项:
BUILD_SLEEP
自动构建一个包后,在开始自动构建另一个包前等待多少秒