Commit graph

675 commits

Author SHA1 Message Date
Michal Nowak
62ed25d7c0
Drop unused env variable SCANBUILD 2025-09-01 16:28:33 +02:00
Michal Nowak
2b793d3f14
scan-build does not need to wait for previous stages 2025-09-01 16:28:33 +02:00
Michal Nowak
bb26409f34
Make "trixie" the base image 2025-09-01 16:28:33 +02:00
Michal Nowak
840069856f
Move CI and QA tools from Debian "sid" to "trixie"
Debian "sid" is not a stable test bed and should be avoided.
2025-09-01 16:28:33 +02:00
Michal Nowak
263810e779
Add Debian "trixie" 2025-09-01 16:28:33 +02:00
Petr Špaček
9f318b21b5 Reverse config grammar checks and docs builds
Make grammar check in CI more user friendly. Previously Sphinx docs
build might have failed because outdated grammar files and this would
have prevented CI from generating grammar file patch.
2025-08-26 10:13:00 +00:00
Nicki Křížek
338389b3eb Update DNS Shotgun parameters for an updated dataset
We've switched to an updated dataset for shotgun jobs. The change in
underlying traffic caused the more sensitive doh-get (and partially dot)
jobs to overload the resolver, making the jobs unstable and unreliable,
due to an increased number of timeouts.

Readjust the load parameters slightly to avoid exceeding ~2 % of
timeouts in the cold cache scenario to stabilize the job results.
2025-08-14 18:40:28 +02:00
Andoni Duarte Pintado
e5a364c741 Add a different log file for each meson test
Each run of `meson test` overwrites the default log file testlog.txt,
this means we lose the backtraces of previous run. This commit assigns
a different log file for each run.
2025-08-06 11:09:22 +00:00
Nicki Křížek
5423bae2dc Allow unit tests to fail on AlmaLinux 8
The doh unit test has been timing out recently and we don't have a fix
for it yet. Mark it as warning rather than a hard failure, since it's a
known issue.

Related #5448
2025-08-06 10:38:17 +02:00
Nicki Křížek
cbebeacec1 Split up and parametrize filters tests
Move tests which use different configuration to dedicated modules to
avoid possible interference with other tests.

Parametrize the test cases to have a dedicated test for each server
configuration.

Turn the check_filter() comments into log messages to help with
debugging.
2025-08-05 23:01:04 -07:00
Aydın Mercan
0b309a829c
reintroduce cross version config tests
The `cross-version-config-tests` CI job had to be removed due to radical
differences between meson and autoconf. With the release of 9.21.11
this job now can be reintroduced by comparing two meson built BIND
source trees.
2025-07-31 14:17:14 +03:00
Michal Nowak
310884c259
Revert "Capture scripts for Coverity Scan analysis"
This reverts commit b4a2674d98.

The --fs-capture-search option is no more. The ability to analyse Python
scripts in Coverity turned out to be questionable anyways.
2025-07-31 11:51:34 +02:00
Petr Špaček
e702e09143 Log all installed system packages and Python libraries before build 2025-07-31 10:37:46 +02:00
Petr Špaček
8c71989a45 Run MR pipelines also on AlmaLinux 9
Turns out Python version there is older than elsewhere.
2025-07-31 10:37:46 +02:00
Michał Kępień
e2c6603cb5
Check meson.build formatting in CI
Add a new CI job that checks whether all meson.build files in the
repository are formatted in the exact same way as "muon fmt" would
format them.  This enforces formatting consistency across all
meson.build files in the repository and enables updating their contents
using dedicated tools, e.g. "meson rewrite".
2025-07-30 17:37:38 +02:00
Michal Nowak
1f45947088
Add AlmaLinux 10 FIPS 2025-07-28 18:55:34 +02:00
Michal Nowak
3b274e5993
Do not add AlmaLinux 8 FIPS unit and system test in MR pipelines 2025-07-28 18:55:15 +02:00
Nicki Křížek
7001056eab Isolate rollover-going-insecure test case 2025-07-18 13:37:58 +02:00
Nicki Křížek
d737986ea2 Turn on doctest in CI
Run doctests for the isctest module in a dedicated CI job.
2025-07-18 11:32:41 +02:00
Michal Nowak
75dda37aa8 Add "fips" tags to AlmaLinux FIPS machines 2025-07-10 14:47:52 +02:00
Michal Nowak
7c5c16ea6b
Do not add AlmaLinux 9 unit and system test in MR pipelines 2025-07-08 14:51:47 +02:00
Michal Nowak
42367082cc
Add AlmaLinux 10 2025-07-08 14:51:47 +02:00
Michal Nowak
8f858c4f03
Ensure PYTHON is set for every parse_tsan.py invocation
System tests' after_script missed the PYTHON environmental variable
setup.

    $ find -name 'tsan.*' -exec "$PYTHON" util/parse_tsan.py {} \;
    find: '': No such file or directory
2025-07-08 11:05:00 +02:00
Štěpán Balážik
9a6e8b9190 Run an additional respdiff job for merge requests and schedules
On MRs it uses the merge target as the reference.
In schedules it uses the latest released version for this branch as the
reference.
2025-07-06 13:18:42 +00:00
Nicki Křížek
50a1d49e7d Allow flaky unit tests to be re-run in CI
Mark instable unit tests with `flaky` test suite. Execute the stable
separately in CI. Allow the flaky ones to be re-executed once in case
they fail.
2025-07-02 13:14:28 +02:00
Andoni Duarte Pintado
8538c645ca Remove unused reference to SYSTEMTESTTOP
The SYSTEMTESTTOP variable is no longer used in the tests.
2025-07-02 08:50:34 +00:00
Štěpán Balážik
7ca18df58a Only run ci-orphaned-anchors on MR events
Now, it is also run in schedules and most annoyingly on push which means
that it is run twice on a push to a branch where a MR exists.
2025-06-27 20:27:14 +02:00
Štěpán Balážik
919f5d6419 Remove orphaned anchors in .gitlab-ci.yml
These were left there after previous refactors.
2025-06-27 16:04:22 +00:00
Štěpán Balážik
5ed2b6c080 Add a check for defined but never used anchors in .gitlab-ci.yaml
If a anchor is ever orphaned, this will fail in CI.
2025-06-27 16:04:22 +00:00
Štěpán Balážik
9331451c5f Don't redifine stage:precheck in ci-variables job definition
The value is defined in the *precheck_job anchor.
2025-06-27 16:04:22 +00:00
Štěpán Balážik
3a8ffc74df Add a pytest mark for system tests that require Internet connection
We skip those by default as:

a) we don't want to stress the upstream servers in every CI pipeline
b) system tests need to be runnable in a isolated environment by default
2025-06-27 07:24:48 +00:00
Štěpán Balážik
c7a8f61055 Rename CI_ENABLE_ALL_TESTS to CI_ENABLE_LONG_TESTS
New name is more descriptive and allows us to created more optional
test sets.
2025-06-27 07:24:48 +00:00
Petr Špaček
052269a357 Simplify maintenance of NO_BUILD_TEST_PREREQ CI hack
Our split between build and test phases in CI triggers odd corner case
in Meson:
- Newer Meson versions (1.7.0+) do not build test targets as part of
  "all" target.
- We copy build artifacts from build phase into test container.
- meson test --no-rebuild does not build test artifacts even if they are
  missing.
- To build these test binaries Meson has special target
  "meson-test-prereq". This target exists only in Meson >= 0.63.
- Ubuntu 22.04 has only Meson 0.61.2 so this target does not exist.

To counter this problem, we introduced BUILD_TEST_PREREQ variable in CI
to explicitly build "meson-test-prereq" target in the "build" phase only
inside images with new-enough Meson versions. This worked, but it forced
us to keep track of Meson versions on various
distros and update the variable accordingly.

This commit inverts the logic so we build the special target by default
(in the build phase) and skip building it only if Meson version is too
old. So once we drop the old image, the variable (or rather it's usage)
will be gone and we don't need to touch it for newer images.

We have also considered installing newer Meson into the test image, but
decided to keep the old version around so we can test minimal Meson
version specified in meson.build file.
2025-06-26 14:43:17 +02:00
Michal Nowak
1b2c191bed Disable Kerberos in tumbleweed
In the tumbleweed image, we utilize LibreSSL. Several BIND 9 libraries
are linked against LibreSSL's libcrypto.so.55, and when Kerberos is
enabled, we link against libk5crypto.so.3, which in turn links against
OpenSSL's libcrypto.so.3. This might theoretically lead to a symbol
conflict.
2025-06-26 12:54:45 +02:00
Štěpán Balážik
4303e06919 Clean up the definitions and usages of &unit_test_* anchors
Remove redundant indirections and overwrites.
2025-06-26 11:17:30 +02:00
Štěpán Balážik
4ec1a37ca0 Hoist the junit and artifact handling to the &unit_test_common anchor
In some cases the report wasn't generated, sometimes it wasn't kept
properly. This unifies the way artifacts are generated and kept.
2025-06-26 11:17:30 +02:00
Štěpán Balážik
cbe9972d3e Clean up the definitions and usages of &system_test_* anchors
Remove redundant indirections and overwrites.
2025-06-25 17:40:05 +02:00
Štěpán Balážik
c61ff639b3 Hoist the artifact handling to the &system_test_common anchor
In the past artifacts of different types of system test jobs were
treated differently but this is no longer the case.
2025-06-25 17:36:29 +02:00
Štěpán Balážik
dfd6097f7b Add a check for existence and sanity of the junit.xml file
And use if after system tests are run using pytest.
2025-06-25 17:24:46 +02:00
Michal Nowak
31922536c0 Update Clang to version 20 2025-06-25 12:44:22 +10:00
Nicki Křížek
ebf155ecc8 Add newline for changelog CI job
In case the changelog file doesn't have an empty line at the end of the
file, the job may fail with the following error:

WARNING: Bullet list ends without a blank line; unexpected unindent.

This typically happens in MRs targeting the -S edition, as those
changelogs usually don't have an empty newline. This change ensures the
changelog job can pass and verify the title/desc contents even in those
cases.
2025-06-24 17:29:26 +02:00
Michal Nowak
9809735195 Fix release CI job with meson
Fix documentation paths.
2025-06-24 17:00:05 +02:00
Michal Nowak
875c609424 Build epub ARM as part of docs jobs 2025-06-24 17:00:05 +02:00
Michal Nowak
b20c71c2dc
Add Alpine Linux 3.22 2025-06-24 13:25:06 +02:00
Aydın Mercan
5c9b4f3163
Remove build requirements from building arm
The meson build switched to generating the file grammars and using meson
to build the manpages/ARM. This is because meson doesn't work well when
writing files outside the build directory.

However, this has been suboptimal when someone only wants to build the
documentation (like RTD). Sphinx can now be used outside meson like it
was with autoconf.

Grammars are now updated by the developer with CI checking if one is
needed or not, like clang-format.
2025-06-23 13:45:04 +03:00
Michał Kępień
4f7f420534
Move "stress" test generation script to QA repo
Move the util/generate-stress-test-configs.py script from the BIND 9
source repository to the BIND 9 QA repository.  This simplifies the
maintenance of that script by eliminating the need to backport every
change applied to it to multiple branches.
2025-06-21 06:43:36 +02:00
Aydın Mercan
5cd6c173ff
replace the build system with meson
Meson is a modern build system that has seen a rise in adoption and some
version of it is available in almost every platform supported.

Compared to automake, meson has the following advantages:

* Meson provides a significant boost to the build and configuration time
  by better exploiting parallelism.

* Meson is subjectively considered to be better in readability.

These merits alone justify experimenting with meson as a way of
improving development time and ergonomics. However, there are some
compromises to ensure the transition goes relatively smooth:

* The system tests currently rely on various files within the source
  directory. Changing this requirement is a non-trivial task that can't
  be currently justified. Currently the last compiled build directory
  writes into the source tree which is in turn used by pytest.

* The minimum version supported has been fixed at 0.61. Increasing this
  value will require choosing a baseline of distributions that can
  package with meson. On the contrary, there will likely be an attempt
  to decrease this value to ensure almost universal support for building
  BIND 9 with meson.
2025-06-11 10:30:12 +03:00
Petr Špaček
304638b0b2 Revert "chg: ci: Run CI danger job even if user canceled it while it was running"
This reverts merge request !10490
2025-06-02 15:58:52 +00:00
Petr Špaček
33bc2628b7 Run CI danger job even if user canceled it while it was running
Limitation: The after_script is not executed if the job did not start at
all, i.e. if the user canceled the job before it got onto a runner.
See https://gitlab.com/groups/gitlab-org/-/epics/10158
2025-06-02 11:40:46 +00:00
Michal Nowak
fbcdbca65f
Check system is FIPS-aware when BIND 9 FIPS mode is enabled 2025-05-29 18:36:25 +02:00