Skip to content

Instantly share code, notes, and snippets.

@neruthes
Created January 24, 2022 20:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save neruthes/d3204009918fa41f789ca29945098824 to your computer and use it in GitHub Desktop.
Save neruthes/d3204009918fa41f789ca29945098824 to your computer and use it in GitHub Desktop.

全树 QA 策略草案

需求综述

  • 每次更新包版本时需要做 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 自动构建一个包后,在开始自动构建另一个包前等待多少秒
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment