please help review this design
--------- Thanks, Lu Weitao
On Wed, Feb 09, 2022 at 05:20:12PM +0800, Lu Weitao wrote:
# extract buildinfo and save it to ES todo from reproducible-build flow
after build rpm, and upload buildinfo.yaml, rpmbuild to server | v $result_root/rpmbuild.yaml ---> rpmbuild.json ---> merge to stats.json $result_root/rpmbuild_info.yaml ---> rpmbuild_info.json ---> merge to stats.json | v save stats.json to ES db # 为compare, diifoscope 提供数据源 eg: { "id": xxx, "os": "openeuler", "arch": "aarch64" "stats": { "rpmbuild.hash_value": xxx,
## TODO1: improve compass-ci/sbin/result2stats, extract-stats service call it support extract buildinfo usage: result2stats $result_root
... $result_root/rpmbuild ---> rpmbuild.json ---> merge to stats.json $result_root/buildinfo.yaml ---> buildinfo.json ---> merge to stats.json ...
### input: result_root/buildinfo(buildinfo.yaml)
- e.g. samba_4.9.5+dfsg-5+deb10u2_arm64.buildinfo
Format: 1.0 Source: samba Binary: samba samba-libs samba-common samba-common-bin smbclient samba-testsuite registry-tools samba-dev python-samba samba-dsdb-modules samba-vfs-modules libsmbclient libsmbclient-dev winbind libpam-winbind libnss-winbind libwbclient0 libwbclient-dev ctdb Architecture: all arm64 source Version: 2:4.9.5+dfsg-5+deb10u2 Checksums-Md5: 79ffac5466e2b36633e0f429644407d0 3211 samba_4.9.5+dfsg-5+deb10u2.dsc d523774b75cc4d31dce4696d41d68b8f 536500 winbind_4.9.5+dfsg-5+deb10u2_arm64.deb ... Checksums-Sha1: b8c10499c1b6b7c5111c7f2d8d617ed8a2ff938e 3211 samba_4.9.5+dfsg-5+deb10u2.dsc 1569bfdb4399f92852863f67153cce046a0cbb38 536500 winbind_4.9.5+dfsg-5+deb10u2_arm64.deb ... Checksums-Sha256: c9094fcc63930f665707c596134ea64e44d433d3882b3de544c2a83f574aafb9 3211 samba_4.9.5+dfsg-5+deb10u2.dsc 3304c2fa4f7204682747bed70f7ce61b134b21f063f9ebab0aeb2e3af645b744 536500 winbind_4.9.5+dfsg-5+deb10u2_arm64.deb ... Build-Origin: Debian Build-Architecture: arm64 Build-Date: Sun, 30 Jan 2022 09:27:50 +0000 Installed-Build-Depends: adduser (= 3.118), zlib1g-dev (= 1:1.2.11.dfsg-1) ... Environment: DEB_BUILD_OPTIONS="parallel=128" SOURCE_DATE_EPOCH="1638005690"
### output result_root/buildinfo.json
{ "Hash": "SHA512", "Format": 1.0, "Build-Architecture": "i386", "Source": "fweb (1.62-12)", "Binary": "fweb fweb-doc", "Architecture": "all i386", "Version": "1.62-12+b2", "Binary-Only-Changes": "fweb (1.62-12+b2) sid; urgency=low, binary-only=yes . * Binary-only non-maintainer upload for amd64; no source changes. * Rebuild for multiarch sync . -- amd64 / i386 Build Daemon (brahms) <buildd_amd64-brahms@buildd.debian.org> Wed, 30 May 2012 09:48:12 +0200 18:37:51 +0000", ... }
## TODO2: save buildinfo to job(ES) extract-service load $result_root/buildinfo.json
- option1: merge job['buildinfo'](job['record']['buildinfo'])
meeting record: job.record.build.xxx: v => possible solution option1 通用性好 (job['record']['buildinfo'][xxx]) 结构较复杂
job.info.build.xxx: v 效果同上 value type: - output binary hash - info (xxx.rpm)
job['buildinfo'] 结构简单,但只适用与构建任务,目前未发现其它类型的job有这种需求,如需使用buildinfo进行搜索,那这种方式更简单
**job like:**
{ "id": xxx, "os": "openeuler", ... "buildinfo": { "Hash": "SHA512", "Format": 1.0, ... } }
**advantage:**
- reuse job['buildinfo'] to submit again # we can also merge it to job.yaml
- 3rd tool such as: `diffoscope` get job['buildinfo']
**disadvantage:**
- compare need get metric from buildinfo in addition
option2: merge buildinfo to job['stats'], job like:
{ "id": xxx, "os": "openeuler", "stats": { "buildinfo.Hash": "SHA512", "buildinfo.Format": 1.0, ... } }
advantage / disadvantage: opposite of option1
job.stats.rpmbuild.xxx job['stats']['rpmbuild.xxx'] compare 不好区分buildinfo 和 rpmbuild 需要变动lkp-tests/stats/rpmbuild,且buildinfo > result_root/rpmbuild
job.stats.buildinfo.xxx => possible solution option2 job['stats']['buildinfo.xxx'] extract-stats 已经支持,无需改动代码 仅仅将buildinfo信息输出未 result_root/buildinfo.yaml
compare 性能结果时忽略 buildinfo (可以新加perf-metric-ignore规则)
job.stats.message.xxx / job.stats.xxx.message 目前.message, .log 已经是perf-metric-ignore规则,可以考虑将buildinfo也加进去
job.stats.info.build.buildinfo.xhhhhhxx => possible solution 通用性更好,相当于对metric有个全面的分类 结构较多
job.buildinfo.xxx(in option1)
option3: option1 + option2
job like:
{ "id": xxx, "os": "openeuler", ... "buildinfo": { "Hash": "SHA512", "Format": 1.0, ... }, "stats": { "buildinfo.Hash": "SHA512", "buildinfo.Format": 1.0, ... } }
**advantage: opton1 + option2 ** **disadvantage:**
- job bigger, --> save DB
- extract-service does one more thing
Compass-ci mailing list -- compass-ci@openeuler.org To unsubscribe send an email to compass-ci-leave@openeuler.org