[MDBF-518] Diffrences between Debian Salsa and Buildbot testing Created: 2022-12-19 Updated: 2023-01-10 |
|
| Status: | Open |
| Project: | MariaDB Foundation Development |
| Component/s: | Buildbot, debian |
| Affects Version/s: | N/A |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Tuukka Pasanen | Assignee: | Tuukka Pasanen |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | 0d | ||
| Time Spent: | 5h | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Debian Salsa-CI and Buildbot has lot's of differences and they are documented here. These are only from Debian version 10.6 and if there is some major like 10.11 then it's mentioned. Source pre-testsThese test gnitpickThis test uses Seravo Gnitpick which nitpick commits language. Command which is run is:
This test can fail packaging-fix-checksThis test depends on Debian package git devscripts python3-debian
and after that it runs wrap-and-sort-command which does (taken from man page):
command which does this is:
What it mostly does it makes sure that files are in alphabetical order under debian-directory and takes care or debian/control that it does not contain rows over 80-bytes long Buildingbuild bullseye-backportsThis is not the test but builds Debian 11 version of MariaDB and it's used on later tests after build is done build buster-backportsThis is not the test but builds Debian 10 version of MariaDB and it's used on later tests after build is done. This one is available on MariaDB 10.6 and after that there can't be Buster version because of change of dependencies. Upgrading and installautopkgtestAutopkg is different from other tests as it is run inside of LXC virtualization (inside of docker container) and not straightly inside docker container as rest of the tests. Good thing about this is that there is possibility to use systemd and goodies. Autopkg test runs tests that are located under debian/tests/ Git repository for LXC image is https://salsa.debian.org/salsa-ci-team/autopkgtest-lxc LXC image used is (for Sid): https://salsa.debian.org/salsa-ci-team/autopkgtest-lxc/-/jobs/artifacts/master/raw/artifacts/lxc.tar?job=sid Command which is executed is (for debci you can read here:
Where RELEASE is something like buster and DEBCI_LOG_PATH comes from Salsa-CI env variables. Under debian/tests there is currently two tests and then control file where dependencies are collected for these tests. smoke testSmoke test creates use and database and test weather compression plugins are available then it checks if RocksDB is available upstream testIt runs MariaDB test suite and it has unstable-tests for tests that does not work piupartsPiuparts is QA tool which installs and uninstalls all the deb packages created in building process Piuparts needs some of tooling before running inside docker. CHROOT is not chroot as we are inside container is set up as CHROOT_PATH="/tmp/debian-chroot"
After these it's run against build deb packages:
blhcBLHC stands for build log hardening check, checks build logs for missing hardening flags which blhc is a small tool which checks build logs for missing hardening flags. Command behind it is:
LintianLintian is tool to spot problems in Deb-packages. It's little bit conversational as it's tries to keep up with Debian packaging documentation but it's also mixed with good practices. Command to run lintian
missing-breaksMissing breaks tool is Python code which lives outside of Debian package and can be found here. I checks packages to have correct Breaks/Conflicts that they can be installed and uninstalled Command to run
rc-bugsRC bugs tries to find if there is open RC bugs in Debian bug database for the package. Script can be found here Command to run
test basic featuresTest basic feature test some MariaDB basic features. It tries to see if MariaDB is functioning ok after fresh install. print info about server
Test various features
Test that the features still work (this step can be done e.g. after an upgrade)
Test TLS connections
fresh installInstalls build packages to container and tests if server is up and running with service mariadb status and
build mariadbclient consumer Python-MySQLdbBuilds MariaDB Python 3.x client library against build debs
Upgrade MariaDBdefault-libmysqlclient-dev Sid upgradeInstall Debian default-libmysqlclient-dev package and then libmariadb-packages over them Prepare
Install all libraries over them. This is also function that is re-used in several tests
upgrade default-libmysqlclient-dev and Bullseye (also Buster)Same as above but uses Buster or Bullseye packages in test libmysql* to libmariadb* upgradeCan libmariadb* be installed over libmysql* packages
Upgrading in distroUpgrading distro packages are done in Bullseye and Buster images. First they install distro version on MariaDB. In Buster version is 10.3 and in Bullseye version is 10.5. They goes nearly the same as next chapter but they are just not done in Sid. This command is used to install distro packages
Upgrading from MariaDB versionsSalsa-CI has upgrading tests from 10.2-10.6 (currently Debian Sid contains 10.6 version). Most of them goes the same. For example 10.3 goes like this
|
| Comments |
| Comment by Faustin Lammler [ 2022-12-20 ] | |
|
Thanks illuusio! This is very helpfull. I think that we should classify those in 2 categories:
Also, I see some tests that are very specific to Debian packaging (inside debian/*) and that we probably don't want to implement:
Maybe you could summarize those in an array so that it's easier to decide which we should implement and which not? Some tests that we already decide we probably should implement:
Those are tests that I think could be good to have:
I don't know well MTR so there might be things that we already test or the contrary... WRT to what is already done, you can take a look at BB (search for upgrade/install builders). Also as said, all the scripts are in https://github.com/MariaDB/buildbot/tree/main/scripts). I spend quite some time to make those scripts executable on a local VM (outside of BB execution). So for instance, it's easy to test things if you have a build URL with something like:
Same goes for RPM you can execute those script on any clean VM to test new things outside of BB. | |
| Comment by Faustin Lammler [ 2022-12-20 ] | |
| Comment by Tuukka Pasanen [ 2022-12-21 ] | |
|
If we have KVM then we don't need LXC. I think it's kind of tradeof to run Docker and then LXC top of it (or there is something that I don't understand). If there is some build KVM image I guess everything can be done there. I'll take a look at those scripts and start testing how to run these new test. | |
| Comment by Faustin Lammler [ 2022-12-21 ] | |
|
True, KVM is already what we use and also what old BB use (and we are quite expert with the technology). | |
| Comment by Tuukka Pasanen [ 2022-12-21 ] | |
|
Ok let's keep all the options open and see what fits in. LXC is not bad and it's battle tested tech. | |
| Comment by Daniel Black [ 2023-01-10 ] | |
|
faust I think your breakdown is good. What bothered me about the autopkgtest in LXC on salsa is its use of init scripts to mimic what systemd does, and only in very rough terms - https://salsa.debian.org/grooverdan/mariadb-server/-/blob/debian/latest/debian/salsa-ci.yml#L652. |