summaryrefslogtreecommitdiffstats
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r--.gitlab-ci.yml427
1 files changed, 228 insertions, 199 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e02d2d2..7acc343 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -19,7 +19,7 @@ variables:
TEST_PARALLEL_JOBS: 4
CONFIGURE: ./configure
- CLANG_VERSION: 16
+ CLANG_VERSION: 17
CLANG: "clang-${CLANG_VERSION}"
SCAN_BUILD: "scan-build-${CLANG_VERSION}"
LLVM_SYMBOLIZER: "/usr/lib/llvm-${CLANG_VERSION}/bin/llvm-symbolizer"
@@ -38,9 +38,6 @@ variables:
UBSAN_OPTIONS: "halt_on_error=1:abort_on_error=1:disable_coredump=0"
- TARBALL_COMPRESSOR: xz
- TARBALL_EXTENSION: xz
-
INSTALL_PATH: "${CI_PROJECT_DIR}/.local"
# Disable pytest's "cacheprovider" plugin to prevent it from creating
@@ -83,7 +80,7 @@ stages:
- ovh
- amd64
-# Autoscaling GitLab Runner on AWS EC2
+# Autoscaling GitLab Runner on AWS EC2 (amd64)
.linux-amd64: &linux_amd64
tags:
@@ -92,21 +89,16 @@ stages:
- runner-manager
- amd64
-# Stress-testing runners
+# Autoscaling GitLab Runner on AWS EC2 (arm64)
-.linux-stress-amd64: &linux_stress_amd64
+.linux-arm64: &linux_arm64
tags:
- - amd64
+ - linux
- aws
- - linux-stress
- - stress
-
-.linux-stress-arm64: &linux_stress_arm64
- tags:
+ - runner-manager
- aarch64
- - aws
- - linux-stress
- - stress
+
+# Stress-testing runners
.freebsd-stress-amd64: &freebsd_stress_amd64
tags:
@@ -124,8 +116,8 @@ stages:
# Alpine Linux
-.alpine-3.18-amd64: &alpine_3_18_amd64_image
- image: "$CI_REGISTRY_IMAGE:alpine-3.18-amd64"
+.alpine-3.19-amd64: &alpine_3_19_amd64_image
+ image: "$CI_REGISTRY_IMAGE:alpine-3.19-amd64"
<<: *linux_amd64
# Oracle Linux
@@ -180,24 +172,20 @@ stages:
# Fedora
-.tsan-fedora-38-amd64: &tsan_fedora_38_amd64_image
- image: "$CI_REGISTRY_IMAGE:tsan-fedora-38-amd64"
+.tsan-fedora-39-amd64: &tsan_fedora_39_amd64_image
+ image: "$CI_REGISTRY_IMAGE:tsan-fedora-39-amd64"
<<: *linux_amd64
-.fedora-38-amd64: &fedora_38_amd64_image
- image: "$CI_REGISTRY_IMAGE:fedora-38-amd64"
+.fedora-39-amd64: &fedora_39_amd64_image
+ image: "$CI_REGISTRY_IMAGE:fedora-39-amd64"
<<: *linux_amd64
-.fedora-38-arm64: &fedora_38_arm64_image
- image: "$CI_REGISTRY_IMAGE:fedora-38-arm64"
- <<: *linux_stress_arm64
+.fedora-39-arm64: &fedora_39_arm64_image
+ image: "$CI_REGISTRY_IMAGE:fedora-39-arm64"
+ <<: *linux_arm64
# Ubuntu
-.ubuntu-bionic-amd64: &ubuntu_bionic_amd64_image
- image: "$CI_REGISTRY_IMAGE:ubuntu-bionic-amd64"
- <<: *linux_amd64
-
.ubuntu-focal-amd64: &ubuntu_focal_amd64_image
image: "$CI_REGISTRY_IMAGE:ubuntu-focal-amd64"
<<: *linux_amd64
@@ -228,8 +216,12 @@ stages:
image: "freebsd-13.2-x86_64"
<<: *libvirt_amd64
+.freebsd-14-amd64: &freebsd_14_amd64_image
+ image: "freebsd-14.0-x86_64"
+ <<: *libvirt_amd64
+
.openbsd-amd64: &openbsd_amd64_image
- image: "openbsd-7.3-x86_64"
+ image: "openbsd-7.4-x86_64"
<<: *libvirt_amd64
### Job Templates
@@ -263,15 +255,6 @@ stages:
<<: *base_image
stage: precheck
-.autoconf: &autoconf_job
- <<: *default_triggering_rules
- <<: *base_image
- stage: precheck
- script:
- - autoreconf2.69 -fi
- artifacts:
- untracked: true
-
.configure: &configure
- ${CONFIGURE}
--disable-maintainer-mode
@@ -309,12 +292,10 @@ stages:
- test -z "${CROSS_COMPILATION}" || grep -F -A 1 "checking whether we are cross compiling" config.log | grep -q "result.*yes"
- test -z "${CROSS_COMPILATION}" || file lib/dns/gen | grep -F -q "ELF 64-bit LSB"
- test -z "${CROSS_COMPILATION}" || ( ! git ls-files -z --others --exclude lib/dns/gen | xargs -0 file | grep "ELF 64-bit LSB" )
- needs:
- - job: autoreconf
- artifacts: true
artifacts:
untracked: true
when: always
+ needs: []
.windows_build: &windows_build_job
stage: build
@@ -351,52 +332,6 @@ stages:
- export SLOT=$(sh -x bin/tests/prepare-softhsm2.sh)
- test -n "${SLOT}" && test "${SLOT}" -gt 0
-cross-version-config-tests:
- stage: system
- <<: *base_image
- <<: *default_triggering_rules
- variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- # Disable option checking to prevent problems with new default options in
- # the &configure anchor.
- EXTRA_CONFIGURE: "--disable-option-checking"
- script:
- # Exclude the dyndb test from the system test as the sample library can't
- # locate the libdns library from the BIND 9 baseline version.
- - sed -i '/^dyndb \\$/d' bin/tests/system/conf.sh.common
- - *configure
- - *setup_interfaces
- - make -j${BUILD_PARALLEL_JOBS:-1}
- - export BIND_BRANCH=16
- # When testing a .0 release, compare it against the previous development
- # release (e.g., 9.19.0 and 9.18.0 should both be compared against 9.17.22).
- - if [ "$(sed -n -E "s|^m4_define\(\[bind_VERSION_PATCH\], ([0-9]+)\)dnl$|\1|p" configure.ac)" = "0" ]; then export BIND_BRANCH=$((BIND_BRANCH - 1 - (BIND_BRANCH % 2))); fi
- - BASELINE="$(curl -s "https://gitlab.isc.org/api/v4/projects/1/repository/tags?search=^v9.${BIND_BRANCH}&order_by=version" | jq -r ".[0].name")"
- - git clone --branch "${BASELINE}" --depth 1 https://gitlab.isc.org/isc-projects/bind9.git "bind-${BASELINE}"
- - cd "bind-${BASELINE}"
- - autoreconf2.69 -fi
- - *configure
- - make -j${BUILD_PARALLEL_JOBS:-1}
- - cd bin/tests/system
- # Neutralize shell and pytests; in effect, "nsX" servers are just started
- # and stopped, thus configuration checked.
- - truncate --size=0 */tests{.sh,*.py}
- # Run the setup phase of all system tests in the most recently tagged BIND 9
- # release using the binaries built for the current BIND 9 version. This
- # intends to detect obvious backward compatibility issues with the latter.
- - sed -i -E "s|(export TOP)=.*|\1=${CI_PROJECT_DIR}|" conf.sh
- - make -j${TEST_PARALLEL_JOBS:-1} -k check V=1
- needs:
- - job: autoreconf
- artifacts: true
- artifacts:
- paths:
- - bind-*
- untracked: true
- expire_in: "1 day"
- when: on_failure
-
.system_test_common: &system_test_common
<<: *default_triggering_rules
stage: system
@@ -504,9 +439,6 @@ cross-version-config-tests:
# Jobs in the precheck stage
-autoreconf:
- <<: *autoconf_job
-
misc:
<<: *precheck_job
script:
@@ -525,7 +457,6 @@ misc:
- sh util/check-win32util-configure
- sh util/check-categories.sh
- sh util/xmllint-html.sh
- needs: []
artifacts:
paths:
- checklibs.out
@@ -533,7 +464,6 @@ misc:
black:
<<: *precheck_job
- needs: []
script:
- black $(git ls-files '*.py' '*.py.in')
- git diff > black.patch
@@ -546,7 +476,6 @@ black:
clang-format:
<<: *precheck_job
- needs: []
script:
- if [ -r .clang-format ]; then "${CLANG_FORMAT}" -i -style=file $(git ls-files '*.c' '*.h'); fi
- git diff > clang-format.patch
@@ -559,25 +488,41 @@ clang-format:
coccinelle:
<<: *precheck_job
- needs: []
script:
- util/check-cocci
- if test "$(git status --porcelain | grep -Ev '\?\?' | wc -l)" -gt "0"; then git status --short; exit 1; fi
reuse:
<<: *precheck_job
- needs: []
image:
name: docker.io/fsfe/reuse:latest
entrypoint: [""]
script:
- reuse lint
-danger:
+shfmt:
<<: *precheck_job
needs: []
script:
- - danger-python ci -f
+ - shfmt -w -i 2 -ci -bn bin/tests/system/ util/ $(find bin/tests/system/ -name "*.sh.in")
+ - git diff > shfmt.patch
+ - if test "$(git status --porcelain | grep -Ev '\?\?' | wc -l)" -gt "0"; then git status --short; exit 1; fi
+ artifacts:
+ paths:
+ - shfmt.patch
+ expire_in: "1 week"
+ when: on_failure
+
+danger:
+ <<: *precheck_job
+ # Keep the GIT_DEPTH environment variable set to a "high number" before
+ # https://github.com/libgit2/libgit2/pull/6662 is addressed and integrated
+ # into pygit2.
+ variables:
+ GIT_DEPTH: 1000
+ script:
+ - pip install git+https://gitlab.isc.org/isc-projects/hazard.git
+ - hazard
only:
refs:
- merge_requests
@@ -588,19 +533,16 @@ pylint:
<<: *default_triggering_rules
<<: *base_image
stage: postcheck
- needs:
- - job: autoreconf
- artifacts: true
script:
- *configure
- export PYTHONPATH="$PYTHONPATH:$CI_PROJECT_DIR/bin/python"
- pylint --rcfile $CI_PROJECT_DIR/.pylintrc $(git ls-files '*.py' | grep -vE '(ans\.py|dangerfile\.py|^bin/tests/system/)')
# Ignore Pylint wrong-import-position error in system test to enable use of pytest.importorskip
- pylint --rcfile $CI_PROJECT_DIR/.pylintrc --disable=wrong-import-position $(git ls-files 'bin/tests/system/*.py' | grep -vE 'ans\.py')
+ needs: []
checkbashisms:
<<: *precheck_job
- needs: []
script:
- checkbashisms $(find . -path './.git' -prune -o -type f -exec sh -c 'head -n 1 "{}" | grep -qsF "#!/bin/sh"' \; -print | sed -e '/^\.\/install-sh$/d')
@@ -620,10 +562,10 @@ tarball-create:
- rm -rf "${BIND_DIRECTORY}/tmp/.doctrees/"
- for man in "${BIND_DIRECTORY}/doc/man/"*; do mv "$man" "$man"in; done
- tar --append --file="${BIND_DIRECTORY}.tar" "${BIND_DIRECTORY}/doc/man/"*in
- - ${TARBALL_COMPRESSOR} "${BIND_DIRECTORY}.tar"
+ - xz "${BIND_DIRECTORY}.tar"
artifacts:
paths:
- - bind-*.tar.${TARBALL_EXTENSION}
+ - bind-*.tar.xz
# Jobs for doc builds on Debian 12 "bookworm" (amd64)
@@ -641,40 +583,96 @@ docs:
- *configure
- make -j${BUILD_PARALLEL_JOBS:-1} all V=1
- make -j${BUILD_PARALLEL_JOBS:-1} doc V=1
- - if test "$(git status --porcelain | grep -Ev '\?\?' | grep -v -F -e aclocal.m4 -e configure -e ltmain.sh -e m4/ | wc -l)" -gt "0"; then git status --short; exit 1; fi
- - qpdf --check doc/arm/_build/latex/Bv9ARM.pdf
+ - if test "$(git status --porcelain | grep -Ev '\?\?' | grep -v -F -e aclocal.m4 -e configure -e ltmain.sh -e bin/named/bind9.xsl.h -e m4/ | wc -l)" -gt "0"; then git status --short; exit 1; fi
- find doc/man/ -maxdepth 1 -name "*.[0-9]" -exec mandoc -T lint "{}" \; | ( ! grep -v -e "skipping paragraph macro. sp after" -e "unknown font, skipping request. ft C" -e "input text line longer than 80 bytes" )
- needs:
- - job: autoreconf
- artifacts: true
artifacts:
paths:
- doc/arm/
- doc/man/
- doc/misc/
when: always
+ needs: []
+
+docs:pdf:
+ <<: *api_schedules_tags_triggers_web_triggering_rules
+ <<: *base_image
+ stage: docs
+ before_script:
+ - apt-get -y install qpdf texlive-full texlive-xetex xindy
+ script:
+ - *configure
+ - make -C doc/arm/ pdf V=1
+ - qpdf --check doc/arm/_build/latex/Bv9ARM.pdf
+ artifacts:
+ untracked: true
+ needs: []
-# Jobs for regular GCC builds on Alpine Linux 3.18 (amd64)
+# Job detecting named.conf breakage introduced since the previous point release
-gcc:alpine3.18:amd64:
+cross-version-config-tests:
+ stage: system
+ <<: *base_image
+ <<: *default_triggering_rules
+ variables:
+ CC: gcc
+ CFLAGS: "${CFLAGS_COMMON}"
+ # Disable option checking to prevent problems with new default options in
+ # the &configure anchor.
+ EXTRA_CONFIGURE: "--disable-option-checking"
+ script:
+ # Exclude the dyndb test from the system test as the sample library can't
+ # locate the libdns library from the BIND 9 baseline version.
+ - sed -i '/^dyndb \\$/d' bin/tests/system/conf.sh.common
+ - *configure
+ - *setup_interfaces
+ - make -j${BUILD_PARALLEL_JOBS:-1}
+ - export BIND_BRANCH=16
+ # When testing a .0 release, compare it against the previous development
+ # release (e.g., 9.19.0 and 9.18.0 should both be compared against 9.17.22).
+ - if [ "$(sed -n -E "s|^m4_define\(\[bind_VERSION_PATCH\], ([0-9]+)\)dnl$|\1|p" configure.ac)" = "0" ]; then export BIND_BRANCH=$((BIND_BRANCH - 1 - (BIND_BRANCH % 2))); fi
+ - BASELINE="$(curl -s "https://gitlab.isc.org/api/v4/projects/1/repository/tags?search=^v9.${BIND_BRANCH}&order_by=version" | jq -r ".[0].name")"
+ - git clone --branch "${BASELINE}" --depth 1 https://gitlab.isc.org/isc-projects/bind9.git "bind-${BASELINE}"
+ - cd "bind-${BASELINE}"
+ - *configure
+ - make -j${BUILD_PARALLEL_JOBS:-1}
+ - cd bin/tests/system
+ # Neutralize shell and pytests; in effect, "nsX" servers are just started
+ # and stopped, thus configuration checked.
+ - truncate --size=0 */tests{.sh,*.py}
+ # Run the setup phase of all system tests in the most recently tagged BIND 9
+ # release using the binaries built for the current BIND 9 version. This
+ # intends to detect obvious backward compatibility issues with the latter.
+ - sed -i -E "s|(export TOP)=.*|\1=${CI_PROJECT_DIR}|" conf.sh
+ - make -j${TEST_PARALLEL_JOBS:-1} -k check V=1
+ artifacts:
+ paths:
+ - bind-*
+ untracked: true
+ expire_in: "1 day"
+ when: on_failure
+ needs: []
+
+# Jobs for regular GCC builds on Alpine Linux 3.19 (amd64)
+
+gcc:alpine3.19:amd64:
variables:
CC: gcc
CFLAGS: "${CFLAGS_COMMON}"
- <<: *alpine_3_18_amd64_image
+ <<: *alpine_3_19_amd64_image
<<: *build_job
-system:gcc:alpine3.18:amd64:
- <<: *alpine_3_18_amd64_image
+system:gcc:alpine3.19:amd64:
+ <<: *alpine_3_19_amd64_image
<<: *system_test_job
needs:
- - job: gcc:alpine3.18:amd64
+ - job: gcc:alpine3.19:amd64
artifacts: true
-unit:gcc:alpine3.18:amd64:
- <<: *alpine_3_18_amd64_image
+unit:gcc:alpine3.19:amd64:
+ <<: *alpine_3_19_amd64_image
<<: *unit_test_job
needs:
- - job: gcc:alpine3.18:amd64
+ - job: gcc:alpine3.19:amd64
artifacts: true
# Jobs for regular GCC builds on Oracle Linux 7 (amd64)
@@ -760,8 +758,8 @@ gcc:tarball:nosphinx:
<<: *build_job
before_script:
- (! command -v sphinx-build >/dev/null)
- - tar --extract --file bind-*.tar.${TARBALL_EXTENSION}
- - rm -f bind-*.tar.${TARBALL_EXTENSION}
+ - tar --extract --file bind-*.tar.xz
+ - rm -f bind-*.tar.xz
- cd bind-*
needs:
- job: tarball-create
@@ -904,13 +902,11 @@ scan-build:
script:
- *configure
- *scan_build
- needs:
- - job: autoreconf
- artifacts: true
artifacts:
paths:
- scan-build.reports/
when: on_failure
+ needs: []
# Jobs for regular GCC builds on Debian "sid" (amd64)
# Also tests configration option: --without-lmdb.
@@ -963,8 +959,8 @@ gcc:tarball:
<<: *base_image
<<: *build_job
before_script:
- - tar --extract --file bind-*.tar.${TARBALL_EXTENSION}
- - rm -f bind-*.tar.${TARBALL_EXTENSION}
+ - tar --extract --file bind-*.tar.xz
+ - rm -f bind-*.tar.xz
- cd bind-*
needs:
- job: tarball-create
@@ -1015,25 +1011,6 @@ unit:gcc:tumbleweed:amd64:
- job: gcc:tumbleweed:amd64
artifacts: true
-# Jobs for regular GCC builds on Ubuntu 18.04 Bionic Beaver (amd64)
-
-gcc:bionic:amd64:
- variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON} -O2"
- EXTRA_CONFIGURE: "--disable-dnstap --with-gssapi --without-cmocka"
- <<: *ubuntu_bionic_amd64_image
- <<: *build_job
- <<: *api_schedules_tags_triggers_web_triggering_rules
-
-system:gcc:bionic:amd64:
- <<: *ubuntu_bionic_amd64_image
- <<: *system_test_job
- <<: *api_schedules_tags_triggers_web_triggering_rules
- needs:
- - job: gcc:bionic:amd64
- artifacts: true
-
# Jobs for regular GCC builds on Ubuntu 20.04 Focal Fossa (amd64)
gcc:focal:amd64:
@@ -1063,8 +1040,8 @@ unit:gcc:focal:amd64:
gcc:jammy:amd64:
variables:
CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "--with-libidn2"
+ CFLAGS: "${CFLAGS_COMMON} -O2"
+ EXTRA_CONFIGURE: "--with-libidn2 --disable-dnstap --with-gssapi --without-cmocka"
<<: *ubuntu_jammy_amd64_image
<<: *build_job
@@ -1082,7 +1059,7 @@ unit:gcc:jammy:amd64:
- job: gcc:jammy:amd64
artifacts: true
-# Jobs for ASAN builds on Fedora 38 (amd64)
+# Jobs for ASAN builds on Fedora 39 (amd64)
gcc:asan:
variables:
@@ -1090,18 +1067,18 @@ gcc:asan:
CFLAGS: "${CFLAGS_COMMON} -fsanitize=address,undefined -DISC_MEM_USE_INTERNAL_MALLOC=0"
LDFLAGS: "-fsanitize=address,undefined"
EXTRA_CONFIGURE: "--with-libidn2"
- <<: *fedora_38_amd64_image
+ <<: *fedora_39_amd64_image
<<: *build_job
system:gcc:asan:
- <<: *fedora_38_amd64_image
+ <<: *fedora_39_amd64_image
<<: *system_test_job
needs:
- job: gcc:asan
artifacts: true
unit:gcc:asan:
- <<: *fedora_38_amd64_image
+ <<: *fedora_39_amd64_image
<<: *unit_test_job
needs:
- job: gcc:asan
@@ -1130,7 +1107,7 @@ unit:clang:asan:
- job: clang:asan
artifacts: true
-# Jobs for TSAN builds on Fedora 38 (amd64)
+# Jobs for TSAN builds on Fedora 39 (amd64)
gcc:tsan:
variables:
@@ -1138,13 +1115,13 @@ gcc:tsan:
CFLAGS: "${CFLAGS_COMMON} -fsanitize=thread -DISC_MEM_USE_INTERNAL_MALLOC=0"
LDFLAGS: "-fsanitize=thread"
EXTRA_CONFIGURE: "--with-libidn2 --enable-pthread-rwlock"
- <<: *tsan_fedora_38_amd64_image
+ <<: *tsan_fedora_39_amd64_image
<<: *build_job
system:gcc:tsan:
variables:
TSAN_OPTIONS: "${TSAN_OPTIONS_FEDORA}"
- <<: *tsan_fedora_38_amd64_image
+ <<: *tsan_fedora_39_amd64_image
<<: *system_test_tsan_job
needs:
- job: gcc:tsan
@@ -1153,7 +1130,7 @@ system:gcc:tsan:
unit:gcc:tsan:
variables:
TSAN_OPTIONS: "${TSAN_OPTIONS_FEDORA}"
- <<: *tsan_fedora_38_amd64_image
+ <<: *tsan_fedora_39_amd64_image
<<: *unit_test_tsan_job
needs:
- job: gcc:tsan
@@ -1314,26 +1291,42 @@ unit:clang:freebsd13:amd64:
- job: clang:freebsd13:amd64
artifacts: true
-# Jobs for Clang builds on OpenBSD (amd64)
+# Jobs for Clang builds on FreeBSD 14 (amd64)
-clang:openbsd:amd64:
+clang:freebsd14:amd64:
variables:
- CC: clang
+ CFLAGS: "${CFLAGS_COMMON}"
+ # Disable BIND 9 GSS-API support because of Heimdal incompatibility; see FreeBSD bug #275241.
+ EXTRA_CONFIGURE: "${WITH_READLINE_LIBEDIT} --without-gssapi"
USER: gitlab-runner
- EXTRA_CONFIGURE: "--disable-dnstap"
- <<: *openbsd_amd64_image
+ <<: *freebsd_14_amd64_image
<<: *build_job
-system:clang:openbsd:amd64:
- <<: *openbsd_amd64_image
+system:clang:freebsd14:amd64:
+ <<: *freebsd_14_amd64_image
<<: *system_test_job
- <<: *api_schedules_triggers_web_triggering_rules
variables:
USER: gitlab-runner
needs:
- - job: clang:openbsd:amd64
+ - job: clang:freebsd14:amd64
artifacts: true
- allow_failure: true
+
+unit:clang:freebsd14:amd64:
+ <<: *freebsd_14_amd64_image
+ <<: *unit_test_job
+ needs:
+ - job: clang:freebsd14:amd64
+ artifacts: true
+
+# Jobs for Clang builds on OpenBSD (amd64)
+
+clang:openbsd:amd64:
+ variables:
+ CC: clang
+ USER: gitlab-runner
+ EXTRA_CONFIGURE: "--disable-dnstap"
+ <<: *openbsd_amd64_image
+ <<: *build_job
# Jobs with libtool disabled
@@ -1395,7 +1388,7 @@ system:msvc-debug:windows:amd64:
- job: msvc-debug:windows:amd64
artifacts: true
-# Job producing a release tarball
+# Job producing a release directory
release:
<<: *base_image
@@ -1409,24 +1402,22 @@ release:
- find Build/Debug/ \( -name "*.bsc" -o -name "*.idb" \) -print -delete
- find Build/ -regextype posix-extended -regex "Build/.*/($(find bin/tests/ -type f | sed -nE "s|^bin/tests(/system)?/win32/(.*)\.vcxproj$|\2|p" | paste -d"|" -s))\..*" -print -delete
# Create Windows zips
- - openssl dgst -sha256 "${BIND_DIRECTORY}.tar.${TARBALL_EXTENSION}" | tee Build/Release/SHA256 Build/Debug/SHA256
+ - openssl dgst -sha256 "${BIND_DIRECTORY}.tar.xz" | tee Build/Release/SHA256 Build/Debug/SHA256
- cp "doc/arm/_build/latex/Bv9ARM.pdf" Build/Release/
- cp "doc/arm/_build/latex/Bv9ARM.pdf" Build/Debug/
- ( cd Build/Release; zip "../../BIND${BIND_DIRECTORY#bind-}.x64.zip" * )
- ( cd Build/Debug; zip "../../BIND${BIND_DIRECTORY#bind-}.debug.x64.zip" * )
# Prepare release tarball contents (tarballs + zips + documentation)
- - mkdir -p release/doc/arm
- - pushd release
- - mv "../${BIND_DIRECTORY}.tar.${TARBALL_EXTENSION}" ../BIND*.zip .
- - tar --extract --file="${BIND_DIRECTORY}.tar.${TARBALL_EXTENSION}"
+ - mkdir -p "${BIND_DIRECTORY}-release/doc/arm"
+ - pushd "${BIND_DIRECTORY}-release"
+ - mv "../${BIND_DIRECTORY}.tar.xz" ../BIND*.zip .
+ - tar --extract --file="${BIND_DIRECTORY}.tar.xz"
- mv "${BIND_DIRECTORY}"/{CHANGES*,COPYRIGHT,LICENSE,README,srcid} .
- rm -rf "${BIND_DIRECTORY}"
- mv "../doc/arm/_build/html" doc/arm/
- mv "../doc/arm/_build/latex/Bv9ARM.pdf" doc/arm/
- echo '<!DOCTYPE HTML><html lang="en"><meta http-equiv="refresh" content="0; url=doc/arm/html/notes.html"><title>Redirect</title></html>' > "RELEASE-NOTES-${BIND_DIRECTORY}.html"
- popd
- # Create release tarball
- - tar --create --file="${CI_COMMIT_TAG}.tar.gz" --gzip release/
needs:
- job: tarball-create
artifacts: true
@@ -1436,12 +1427,56 @@ release:
artifacts: true
- job: docs
artifacts: true
+ - job: docs:pdf
+ artifacts: true
only:
- tags
artifacts:
paths:
+ - "*-release"
+ expire_in: "1 month"
+
+# Job signing the source tarballs in the release directory
+
+sign:
+ stage: release
+ tags:
+ - signer
+ script:
+ - export RELEASE_DIRECTORY="$(echo *-release)"
+ - pushd "${RELEASE_DIRECTORY}"
+ - |
+ echo
+ cat > /tmp/sign-bind9.sh <<EOF
+ #!/bin/sh
+ {
+ for FILE in \$(find "${PWD}" -name "*.tar.xz" -o -name "*.zip" | sort); do
+ echo ">>> Signing \${FILE}..."
+ gpg2 --local-user "\${SIGNING_KEY_FINGERPRINT}" --armor --digest-algo SHA512 --detach-sign --output "\${FILE}.asc" "\${FILE}"
+ done
+ } 2>&1 | tee "${CI_PROJECT_DIR}/signing.log"
+ EOF
+ chmod +x /tmp/sign-bind9.sh
+ echo -e "\e[31m*** Please sign the releases by following the instructions at:\e[0m"
+ echo -e "\e[31m*** \e[0m"
+ echo -e "\e[31m*** ${SIGNING_HELP_URL}\e[0m"
+ echo -e "\e[31m*** \e[0m"
+ echo -e "\e[31m*** Sleeping until files in ${PWD} are signed... ⌛\e[0m"
+ while [ "$(find . -name "*.asc" -size +0 | sed "s|\.asc$||" | sort)" != "$(find . -name "*.tar.xz" -o -name "*.zip" | sort)" ]; do sleep 10; done
+ - popd
+ - tar --create --file="${RELEASE_DIRECTORY}.tar.gz" --gzip "${RELEASE_DIRECTORY}"
+ artifacts:
+ paths:
- "*.tar.gz"
+ - signing.log
expire_in: never
+ needs:
+ - job: release
+ artifacts: true
+ only:
+ - tags
+ when: manual
+ allow_failure: false
# Coverity Scan analysis upload
@@ -1482,9 +1517,6 @@ coverity:
- *coverity_build
after_script:
- mv -v /tmp/cov-int.tar.gz ${CI_PROJECT_DIR}/
- needs:
- - job: autoreconf
- artifacts: true
artifacts:
paths:
- curl-response.txt
@@ -1495,6 +1527,7 @@ coverity:
variables:
- $COVERITY_SCAN_PROJECT_NAME
- $COVERITY_SCAN_TOKEN
+ needs: []
# Respdiff tests
@@ -1606,18 +1639,16 @@ respdiff-long-third-party:
- git clone --depth 1 https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.isc.org/isc-private/bind-qa.git
- cd bind-qa/bind9/stress
- LD_LIBRARY_PATH="${INSTALL_PATH}/usr/local/lib" BIND_INSTALL_PATH="${INSTALL_PATH}/usr/local" WORKSPACE="${CI_PROJECT_DIR}" bash stress.sh
- needs:
- - job: autoreconf
- artifacts: true
artifacts:
untracked: true
expire_in: "1 week"
when: always
timeout: 2h
+ needs: []
-stress:authoritative:fedora:38:amd64:
- <<: *fedora_38_amd64_image
- <<: *linux_stress_amd64
+stress:authoritative:fedora:39:amd64:
+ <<: *fedora_39_amd64_image
+ <<: *linux_amd64
<<: *stress_job
variables:
CC: gcc
@@ -1630,9 +1661,9 @@ stress:authoritative:fedora:38:amd64:
variables:
- $CI_COMMIT_TAG || ($BIND_STRESS_TEST_OS =~ /linux/i && $BIND_STRESS_TEST_MODE =~ /authoritative/i && $BIND_STRESS_TEST_ARCH =~ /amd64/i)
-stress:recursive:fedora:38:amd64:
- <<: *fedora_38_amd64_image
- <<: *linux_stress_amd64
+stress:recursive:fedora:39:amd64:
+ <<: *fedora_39_amd64_image
+ <<: *linux_amd64
<<: *stress_job
variables:
CC: gcc
@@ -1645,9 +1676,9 @@ stress:recursive:fedora:38:amd64:
variables:
- $CI_COMMIT_TAG || ($BIND_STRESS_TEST_OS =~ /linux/i && $BIND_STRESS_TEST_MODE =~ /recursive/i && $BIND_STRESS_TEST_ARCH =~ /amd64/i)
-stress:rpz:fedora:38:amd64:
- <<: *fedora_38_amd64_image
- <<: *linux_stress_amd64
+stress:rpz:fedora:39:amd64:
+ <<: *fedora_39_amd64_image
+ <<: *linux_amd64
<<: *stress_job
variables:
CC: gcc
@@ -1660,9 +1691,9 @@ stress:rpz:fedora:38:amd64:
variables:
- $CI_COMMIT_TAG || ($BIND_STRESS_TEST_OS =~ /linux/i && $BIND_STRESS_TEST_MODE =~ /rpz/i && $BIND_STRESS_TEST_ARCH =~ /amd64/i)
-stress:authoritative:fedora:38:arm64:
- <<: *fedora_38_arm64_image
- <<: *linux_stress_arm64
+stress:authoritative:fedora:39:arm64:
+ <<: *fedora_39_arm64_image
+ <<: *linux_arm64
<<: *stress_job
variables:
CC: gcc
@@ -1675,9 +1706,9 @@ stress:authoritative:fedora:38:arm64:
variables:
- $CI_COMMIT_TAG || ($BIND_STRESS_TEST_OS =~ /linux/i && $BIND_STRESS_TEST_MODE =~ /authoritative/i && $BIND_STRESS_TEST_ARCH =~ /arm64/i)
-stress:recursive:fedora:38:arm64:
- <<: *fedora_38_arm64_image
- <<: *linux_stress_arm64
+stress:recursive:fedora:39:arm64:
+ <<: *fedora_39_arm64_image
+ <<: *linux_arm64
<<: *stress_job
variables:
CC: gcc
@@ -1690,9 +1721,9 @@ stress:recursive:fedora:38:arm64:
variables:
- $CI_COMMIT_TAG || ($BIND_STRESS_TEST_OS =~ /linux/i && $BIND_STRESS_TEST_MODE =~ /recursive/i && $BIND_STRESS_TEST_ARCH =~ /arm64/i)
-stress:rpz:fedora:38:arm64:
- <<: *fedora_38_arm64_image
- <<: *linux_stress_arm64
+stress:rpz:fedora:39:arm64:
+ <<: *fedora_39_arm64_image
+ <<: *linux_arm64
<<: *stress_job
variables:
CC: gcc
@@ -1784,9 +1815,6 @@ gcov:
pairwise:
<<: *base_image
stage: build
- needs:
- - job: autoreconf
- artifacts: true
script:
- util/pairwise-testing.sh
artifacts:
@@ -1798,3 +1826,4 @@ pairwise:
only:
variables:
- $PAIRWISE_TESTING
+ needs: []