From 9410fd815a818d2015b8af5a26bca9487a424474 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicki=20K=C5=99=C3=AD=C5=BEek?= Date: Tue, 28 Jan 2025 15:23:01 +0100 Subject: [PATCH 1/2] Use make clean to reduce artifacts in successful jobs Reduce the amount of artifacts stored by running make clean at the end of unit and system test run. If any of the previous commands fail, the runner will stop executing the commands in `script` immediately, so the cleanup only happens if none of the previous commands failed. The build artifacts from unit and system tests are re-used anywhere and should be safe to throw away immediately. Same for respdiff. (cherry picked from commit e59bc5b36610168eadde1ce3687f903d2a4630ce) --- .gitlab-ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f7a1eb711c..27c7e287c3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -374,6 +374,7 @@ stages: - > "$PYTEST" --junit-xml="$CI_PROJECT_DIR"/junit.xml -n "$TEST_PARALLEL_JOBS" | tee pytest.out.txt - '( ! grep -F "grep: warning:" pytest.out.txt )' + - make clean >/dev/null 2>&1 after_script: - test -n "${OUT_OF_TREE_WORKSPACE}" && cd "${OUT_OF_TREE_WORKSPACE}" - *display_pytest_failures @@ -428,6 +429,7 @@ stages: - test -n "${OUT_OF_TREE_WORKSPACE}" && cd "${OUT_OF_TREE_WORKSPACE}" script: - make -j${TEST_PARALLEL_JOBS:-1} -k unit V=1 + - make clean >/dev/null 2>&1 after_script: - test -d bind-* && cd bind-* - REALSOURCEDIR="$PWD" @@ -1623,6 +1625,7 @@ respdiff: MAX_DISAGREEMENTS_PERCENTAGE: "0.15" script: - bash respdiff.sh -m /usr/lib/x86_64-linux-gnu/libjemalloc.so.2 -s named -q "${PWD}/100k_mixed.txt" -c 3 -w "${PWD}/rspworkdir" "${CI_PROJECT_DIR}" "/usr/local/respdiff-reference-bind/sbin/named" + - cd ../.. && make clean >/dev/null 2>&1 respdiff:asan: <<: *respdiff_job @@ -1636,6 +1639,7 @@ respdiff:asan: MAX_DISAGREEMENTS_PERCENTAGE: "0.15" script: - bash respdiff.sh -s named -q "${PWD}/100k_mixed.txt" -c 3 -w "${PWD}/rspworkdir" "${CI_PROJECT_DIR}" "/usr/local/respdiff-reference-bind/sbin/named" + - cd ../.. && make clean >/dev/null 2>&1 respdiff:tsan: <<: *respdiff_job @@ -1650,6 +1654,7 @@ respdiff:tsan: TSAN_OPTIONS: "${TSAN_OPTIONS_DEBIAN}" script: - bash respdiff.sh -s named -q "${PWD}/100k_mixed.txt" -c 3 -w "${PWD}/rspworkdir" "${CI_PROJECT_DIR}" "/usr/local/respdiff-reference-bind/sbin/named" + - cd ../.. && make clean >/dev/null 2>&1 after_script: - *find_python - *parse_tsan @@ -1664,6 +1669,7 @@ respdiff-third-party: MAX_DISAGREEMENTS_PERCENTAGE: "0.2" script: - bash respdiff.sh -s third_party -q "${PWD}/100k_mixed.txt" -c 1 -w "${PWD}/rspworkdir" "${CI_PROJECT_DIR}" + - cd ../.. && make clean >/dev/null 2>&1 # Performance tests From 5d45acaa2ff6910bd90b9431a477a3a03eac482a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicki=20K=C5=99=C3=AD=C5=BEek?= Date: Tue, 28 Jan 2025 16:59:47 +0100 Subject: [PATCH 2/2] Enable unit test artifacts for gcov jobs Without using the build artifacts from the unit test jobs in the bookworm tests, the gcov would be incomplete. (cherry picked from commit e5636598a5fd795ef80421f3a5d48c511a9498ff) --- .gitlab-ci.yml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 27c7e287c3..0060642645 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -53,6 +53,9 @@ variables: HYPOTHESIS_PROFILE: "ci" + # Some jobs may clean up the build artifacts unless this is set to 0. + CLEAN_BUILD_ARTIFACTS_ON_SUCCESS: 1 + default: # Allow all running CI jobs to be automatically canceled when a new # version of a branch is pushed. @@ -374,7 +377,7 @@ stages: - > "$PYTEST" --junit-xml="$CI_PROJECT_DIR"/junit.xml -n "$TEST_PARALLEL_JOBS" | tee pytest.out.txt - '( ! grep -F "grep: warning:" pytest.out.txt )' - - make clean >/dev/null 2>&1 + - test "$CLEAN_BUILD_ARTIFACTS_ON_SUCCESS" -eq 0 || ( cd ../../.. && make clean >/dev/null 2>&1 ) after_script: - test -n "${OUT_OF_TREE_WORKSPACE}" && cd "${OUT_OF_TREE_WORKSPACE}" - *display_pytest_failures @@ -429,7 +432,7 @@ stages: - test -n "${OUT_OF_TREE_WORKSPACE}" && cd "${OUT_OF_TREE_WORKSPACE}" script: - make -j${TEST_PARALLEL_JOBS:-1} -k unit V=1 - - make clean >/dev/null 2>&1 + - test "$CLEAN_BUILD_ARTIFACTS_ON_SUCCESS" -eq 0 || make clean >/dev/null 2>&1 after_script: - test -d bind-* && cd bind-* - REALSOURCEDIR="$PWD" @@ -933,8 +936,9 @@ system:gcc:bookworm:amd64: <<: *system_test_gcov_job variables: CI_ENABLE_ALL_TESTS: 1 + CLEAN_BUILD_ARTIFACTS_ON_SUCCESS: 0 TZ: Australia/Sydney - needs: + needs: # using artifacts from unit test job is required for gcov - job: unit:gcc:bookworm:amd64 artifacts: true @@ -943,6 +947,7 @@ unit:gcc:bookworm:amd64: <<: *unit_test_gcov_job variables: CI_ENABLE_ALL_TESTS: 1 + CLEAN_BUILD_ARTIFACTS_ON_SUCCESS: 0 needs: - job: gcc:bookworm:amd64 artifacts: true @@ -961,7 +966,7 @@ system:gcc:bookworm:rbt:amd64: <<: *debian_bookworm_amd64_image <<: *system_test_job needs: - - job: unit:gcc:bookworm:rbt:amd64 + - job: gcc:bookworm:rbt:amd64 artifacts: true unit:gcc:bookworm:rbt:amd64: