when: manual
# }}}
- # pkgtest {{{
- .deploytest: &deploytest
- stage: pkgtest
- only:
- variables:
- - $OBS_REPO =~ /^knot-resolver-devel|knot-dns-devel|knot-resolver-testing$/
- - $CI_COMMIT_TAG
- dependencies: [] # wait for previous stages to finish
- variables:
- OBS_REPO: knot-resolver-latest
- when: delayed
- start_in: 3 minutes # give OBS build some time
- tags:
- - condor
+ # pkg {{{
+ .pkg_deb_extras: &pkg_deb_extras
+ before_script:
+ - apt update
- obs:build:all:
- <<: *deploytest
- only:
- variables:
- - $OBS_REPO =~ /^knot-resolver-devel|knot-dns-devel|knot-resolver-testing|knot-resolver-odvr$/
- - $CI_COMMIT_TAG
- allow_failure: true
- script:
- - "osc results home:CZ-NIC:$OBS_REPO knot-resolver -w"
- - version=$(sed 's/^v//' <(git describe --exact-match HEAD || git rev-parse --short HEAD) )
- - > # check version only for one (reliable) repo to avoid false negatives
- ! osc ls -b home:CZ-NIC:$OBS_REPO knot-resolver Debian_9.0 x86_64 | \
- grep -E '(rpm|deb|tar\.xz)$' | grep -v $version || \
- (echo "ERROR: version mismatch"; exit 1)
- - >
- ! osc results home:CZ-NIC:$OBS_REPO knot-resolver --csv | \
- grep -Ev 'disabled|excluded|Rawhide|CentOS_8_EPEL' | grep -v 'succeeded' -q || \
- (echo "ERROR: build(s) failed"; exit 1)
-
- .distrotest: &distrotest
- <<: *deploytest
- # Description of the distrotest script workflow:
- # 1. wait for OBS package build to complete
- # 2. check the OBS build suceeded
- # 3. set up some variables, dir names etc.
- # 4. create a symlink with predictable name to export artifacts afterwards
- # 5. create an HTCondor job and submit it to a HTCondor cluster
- # 6. check exit code from condor, optionally display one of the logs and end the job with same exit code
+ .enable_repo_build: &enable_repo_build
+ before_script:
+ - ./scripts/enable-repo.py build
+
+ .pkg_test: &pkg_test
+ stage: pkg
+ needs:
+ - pkg:make-archive
+ tags:
+ - lxc
+ - amd64
script:
- - "osc results home:CZ-NIC:$OBS_REPO knot-resolver -a x86_64 -r $DISTROTEST_REPO -w"
- - >
- osc results home:CZ-NIC:$OBS_REPO knot-resolver -a x86_64 -r $DISTROTEST_REPO --csv | grep 'succeeded|$' -q || \
- (echo "ERROR: build failed"; exit 1)
- - export LABEL="gl$(date +%s)_$OBS_REPO"
- - export COMMITDIR="/var/tmp/respdiff-jobs/$(git rev-parse --short HEAD)-$LABEL"
- - export TESTDIR="$COMMITDIR/distrotest.$DISTROTEST_NAME"
- - ln -s $COMMITDIR distrotest_commitdir
- - sudo -u respdiff /var/opt/respdiff/contrib/job_manager/submit.py -w
- -p $DISTROTEST_PRIORITY
- $(sudo -u respdiff /var/opt/respdiff/contrib/job_manager/create.py
- "$(git rev-parse --short HEAD)" -l $LABEL -t distrotest.$DISTROTEST_NAME
- --obs-repo $OBS_REPO)
- - export EXITCODE=$(cat $TESTDIR/j*_exitcode)
- - if [[ "$EXITCODE" != "0" ]]; then cat $TESTDIR/j*_{vagrant.log.txt,stdout.txt}; fi
- - exit $EXITCODE
- after_script:
- - 'cp -t . distrotest_commitdir/distrotest.$DISTROTEST_NAME/j* ||:'
+ # make sure the archive from pkg:make-archive is available
+ - apkg info cache | grep archive/dev
+ - apkg install --build-dep
+ - apkg test --test-dep
+
+ .pkg_test_deb: &pkg_test_deb
+ <<: *pkg_test
+ <<: *pkg_deb_extras
+
+ pkg:make-archive:
+ # archive is created once and reused in other pkg jobs
+ <<: *pkg_deb_extras
+ stage: pkg
+ image: $CI_REGISTRY/packaging/apkg/full/debian-11
+ tags:
+ - lxc
+ - amd64
+ needs: []
artifacts:
- when: always
- expire_in: 1 week
paths:
- - ./j*
- retry:
- max: 1
- when:
- - script_failure
-
- obs:rocky8:x86_64:
- <<: *distrotest
- allow_failure: true
- variables:
- OBS_REPO: knot-resolver-latest
- DISTROTEST_NAME: rocky8
- DISTROTEST_REPO: CentOS_8_EPEL
-
- obs:debian10:x86_64:
- <<: *distrotest
- only:
- variables:
- - $OBS_REPO =~ /^knot-resolver-devel|knot-dns-devel|knot-resolver-testing|knot-resolver-odvr$/
- - $CI_COMMIT_TAG
- variables:
- OBS_REPO: knot-resolver-latest
- DISTROTEST_NAME: debian10
- DISTROTEST_REPO: Debian_10
+ - pkg/
+ script:
+ - apkg build-dep
+ - apkg make-archive
-
+ pkg:debian-11:
+ <<: *pkg_test_deb
+ image: $CI_REGISTRY/packaging/apkg/full/debian-11
- obs:debian11:x86_64:
- <<: *distrotest
- only:
- variables:
- - $OBS_REPO =~ /^knot-resolver-devel|knot-dns-devel|knot-resolver-testing|knot-resolver-odvr$/
- - $CI_COMMIT_TAG
- variables:
- OBS_REPO: knot-resolver-latest
- DISTROTEST_NAME: debian11
- DISTROTEST_REPO: Debian_11
+ pkg:ubuntu-22.04:
+ <<: *pkg_test_deb
+ image: $CI_REGISTRY/packaging/apkg/full/ubuntu-22.04
- obs:fedora35:x86_64:
- <<: *distrotest
- allow_failure: true
- variables:
- OBS_REPO: knot-resolver-latest
- DISTROTEST_NAME: fedora35
- DISTROTEST_REPO: Fedora_35
+ pkg:ubuntu-20.04:
+ <<: *pkg_test_deb
+ <<: *enable_repo_build
+ image: $CI_REGISTRY/packaging/apkg/full/ubuntu-20.04
- obs:fedora36:x86_64:
- <<: *distrotest
- allow_failure: true
- variables:
- OBS_REPO: knot-resolver-latest
- DISTROTEST_NAME: fedora36
- DISTROTEST_REPO: Fedora_36
+ pkg:fedora-37:
+ <<: *pkg_test
+ image: $CI_REGISTRY/packaging/apkg/full/fedora-37
- obs:leap15:x86_64:
- <<: *distrotest
- allow_failure: true
- variables:
- OBS_REPO: knot-resolver-latest
- DISTROTEST_NAME: leap15
- DISTROTEST_REPO: openSUSE_Leap_15.4
+ pkg:fedora-36:
+ <<: *pkg_test
+ image: $CI_REGISTRY/packaging/apkg/full/fedora-36
- obs:ubuntu1804:x86_64:
- <<: *distrotest
- variables:
- OBS_REPO: knot-resolver-latest
- DISTROTEST_NAME: ubuntu1804
- DISTROTEST_REPO: xUbuntu_18.04
+ pkg:alma-9:
+ <<: *pkg_test
+ image: $CI_REGISTRY/packaging/apkg/full/alma-9
- obs:ubuntu2004:x86_64:
- <<: *distrotest
- only:
- variables:
- - $OBS_REPO =~ /^knot-resolver-devel|knot-dns-devel|knot-resolver-testing|knot-resolver-odvr$/
- - $CI_COMMIT_TAG
- variables:
- OBS_REPO: knot-resolver-latest
- DISTROTEST_NAME: ubuntu2004
- DISTROTEST_REPO: xUbuntu_20.04
+ pkg:opensuse-15.4:
+ <<: *pkg_test
+ <<: *enable_repo_build
+ image: $CI_REGISTRY/packaging/apkg/full/opensuse-15.4
+ allow_failure: true # SUSE is always special
- obs:ubuntu2204:x86_64:
- <<: *distrotest
+ # }}}
+ allow_failure: true
- variables:
- OBS_REPO: knot-resolver-latest
- DISTROTEST_NAME: ubuntu2204
- DISTROTEST_REPO: xUbuntu_22.04
- .packagingtest: &packagingtest
- stage: pkgtest
- only:
- refs:
- - nightly@knot/knot-resolver
+ pages:
+ image: $CI_REGISTRY/packaging/apkg/lxc/fedora-36
+ stage: deploy
needs: []
- tags:
- - dind
- - amd64
- variables:
- DISTRO: debian_10
script:
- - pytest -r fEsxX tests/packaging -k $DISTRO
-
- packaging:centos_8:
- <<: *packagingtest
- variables:
- DISTRO: centos_8
-
- packaging:centos_7:
- <<: *packagingtest
- variables:
- DISTRO: centos_7
-
- packaging:fedora_31:
- <<: *packagingtest
- variables:
- DISTRO: fedora_31
-
- packaging:fedora_32:
- <<: *packagingtest
- variables:
- DISTRO: fedora_32
-
- # }}}
+ - git submodule update --init --recursive
+ - apkg build-dep -y
+ - dnf install -y python3-sphinx texinfo doxygen
+ - pip3 install -r doc/requirements.txt
+ - pip3 install sphinx_rtd_theme
+ - meson build_doc -Ddoc=enabled
+ - ninja -C build_doc doc
+ - mv doc/html public
+ artifacts:
+ paths:
+ - public