+## TODO: find out how to generate this file by another yaml file.
+## Gitlab can do it but it is a stupid idea to mess with this
+## when releasing 4 versions at once. See ya later!
+## -- Maria, April 2025
+
variables:
DEBIAN_FRONTEND: noninteractive
LC_ALL: C.UTF-8
- test
- release
+## Docker Image Rules
+#
+# We are running all the build / packaging tests in Dockers (unless otherwise)
+# and these are rules to build these docker images. These are expensive to run
+# and should run only if needed.
+
.docker: &docker_build
stage: image
allow_failure: true
<<: *docker_build
#planned release 4/2025
-# docker-fedora-41-amd64:
+# docker-fedora-42-amd64:
# variables:
-# IMG_NAME: "fedora-41-amd64"
+# IMG_NAME: "fedora-42-amd64"
# <<: *docker_build
docker-opensuse-15.0-amd64:
IMG_NAME: "ubuntu-20.04-amd64"
<<: *docker_build
-docker-ubuntu-20_10-amd64:
- variables:
- IMG_NAME: "ubuntu-20.10-amd64"
- <<: *docker_build
-
-docker-ubuntu-21_04-amd64:
- variables:
- IMG_NAME: "ubuntu-21.04-amd64"
- <<: *docker_build
-
-docker-ubuntu-21_10-amd64:
- variables:
- IMG_NAME: "ubuntu-21.10-amd64"
- <<: *docker_build
-
docker-ubuntu-22_04-amd64:
variables:
IMG_NAME: "ubuntu-22.04-amd64"
IMG_NAME: "ubuntu-24.10-amd64"
<<: *docker_build
+## Build stage
+#
+# Now we compile and run unit tests ... in every single distribution.
+# Every task needs its docker, see above.
+
.build: &build-base
stage: build
script:
# Build docs when tools are available
- if which linuxdoc pdflatex sgmlsasp >/dev/null ; then $MAKE docs ; fi
+# A special task for preparing the release archives
build-release:
image: registry.nic.cz/labs/bird:docbuilder
stage: build
- make obj/doc/bird-singlepage.html
- BRANCH=$CI_COMMIT_BRANCH tools/make-archive
artifacts:
- paths:
+ paths:
- obj/doc/bird-singlepage.html
- bird-*.tar.gz
expire_in: 1 day
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-12-i386
-# build-debian-testing-amd64:
-# <<: *build-linux
-# image: registry.nic.cz/labs/bird:debian-testing-amd64
+build-debian-testing-amd64:
+ <<: *build-linux
+ image: registry.nic.cz/labs/bird:debian-testing-amd64
-# build-debian-testing-i386:
-# <<: *build-linux
-# image: registry.nic.cz/labs/bird:debian-testing-i386
+build-debian-testing-i386:
+ <<: *build-linux
+ image: registry.nic.cz/labs/bird:debian-testing-i386
build-fedora-32-amd64:
<<: *build-linux
<<: *build-linux
image: registry.nic.cz/labs/bird:opensuse-15.3-amd64
-# build-opensuse-15.4-amd64:
-# <<: *build-linux
-# image: registry.nic.cz/labs/bird:opensuse-15.4-amd64
+build-opensuse-15.4-amd64:
+ <<: *build-linux
+ image: registry.nic.cz/labs/bird:opensuse-15.4-amd64
build-opensuse-15.5-amd64:
<<: *build-linux
<<: *build-linux
image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64
-build-ubuntu-20_10-amd64:
- <<: *build-linux
- image: registry.nic.cz/labs/bird:ubuntu-20.10-amd64
-
-# build-ubuntu-21_04-amd64:
-# <<: *build-linux
-# image: registry.nic.cz/labs/bird:ubuntu-21.04-amd64
-
-build-ubuntu-21_10-amd64:
- <<: *build-linux
- image: registry.nic.cz/labs/bird:ubuntu-21.10-amd64
-
build-ubuntu-22_04-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:ubuntu-22.04-amd64
-# build-ubuntu-22_10-amd64:
-# <<: *build-linux
-# image: registry.nic.cz/labs/bird:ubuntu-22.10-amd64
+build-ubuntu-22_10-amd64:
+ <<: *build-linux
+ image: registry.nic.cz/labs/bird:ubuntu-22.10-amd64
-# build-ubuntu-23_04-amd64:
-# <<: *build-linux
-# image: registry.nic.cz/labs/bird:ubuntu-23.04-amd64
+build-ubuntu-23_04-amd64:
+ <<: *build-linux
+ image: registry.nic.cz/labs/bird:ubuntu-23.04-amd64
-# build-ubuntu-23_10-amd64:
-# <<: *build-linux
-# image: registry.nic.cz/labs/bird:ubuntu-23.10-amd64
+build-ubuntu-23_10-amd64:
+ <<: *build-linux
+ image: registry.nic.cz/labs/bird:ubuntu-23.10-amd64
build-ubuntu-24_04-amd64:
<<: *build-linux
<<: *build-linux
image: registry.nic.cz/labs/bird:ubuntu-24.10-amd64
-#build-freebsd-11-amd64:
-# <<: *build-base
-# tags:
-# - freebsd
-# - amd64
-
-#build-freebsd-11-i386:
-# <<: *build-base
-# tags:
-# - freebsd
-# - i386
-
+# Testing builds for just a single protocol each time
.build-only: &build-only
<<: *build-linux
- image: registry.nic.cz/labs/bird:debian-11-amd64
+ image: registry.nic.cz/labs/bird:debian-12-amd64
build-only-aggregator:
<<: *build-only
variables:
CONFIGURE_OPTIONS: --with-protocols=static
+# Packaging rules
+# As we support some ancient versions of different distributions,
+# we need to keep several different machineries. It's not so bad
+# but it's bad nevertheless.
+#
+# We do NOT build separate documentation packages in these rules.
.pkg-deb: &pkg-deb
stage: pkg
# create venv only if it's installed
- if python3 -m venv venv; then . venv/bin/activate; fi
# install older version of bs4 that does not use python version >= 3.6
- - pip3 install beautifulsoup4==4.11.2
+ # apkg depends on bs4, and unless we want to backport python 3.6
+ # to ancient distros, we need to do this workaround
+ - pip3 install beautifulsoup4==4.11.2
- pip3 install apkg
- BRANCH=$CI_COMMIT_BRANCH ARCHIVE_DOCS=false apkg build
#- apkg install -y pkg/pkgs/*/*/*.deb
needs: [build-debian-12-i386]
image: registry.nic.cz/labs/bird:debian-12-i386
-# pkg-debian-testing-amd64:
-# <<: *pkg-deb
-# needs: [build-debian-testing-amd64]
-# image: registry.nic.cz/labs/bird:debian-testing-amd64
+pkg-debian-testing-amd64:
+ <<: *pkg-deb
+ needs: [build-debian-testing-amd64]
+ image: registry.nic.cz/labs/bird:debian-testing-amd64
-# pkg-debian-testing-i386:
-# <<: *pkg-deb
-# needs: [build-debian-testing-i386]
-# image: registry.nic.cz/labs/bird:debian-testing-i386
+pkg-debian-testing-i386:
+ <<: *pkg-deb
+ needs: [build-debian-testing-i386]
+ image: registry.nic.cz/labs/bird:debian-testing-i386
pkg-fedora-32-amd64:
<<: *pkg-rpm-wa
needs: [build-opensuse-15.3-amd64]
image: registry.nic.cz/labs/bird:opensuse-15.3-amd64
-# pkg-opensuse-15.4-amd64:
-# <<: *pkg-rpm-wa
-# needs: [build-opensuse-15.4-amd64]
-# image: registry.nic.cz/labs/bird:opensuse-15.4-amd64
+pkg-opensuse-15.4-amd64:
+ <<: *pkg-rpm-wa
+ needs: [build-opensuse-15.4-amd64]
+ image: registry.nic.cz/labs/bird:opensuse-15.4-amd64
pkg-opensuse-15.5-amd64:
<<: *pkg-rpm-wa
needs: [build-opensuse-15.5-amd64]
image: registry.nic.cz/labs/bird:opensuse-15.5-amd64
-# pkg-ubuntu-16.04-amd64:
-# <<: *pkg-deb
-# needs: [build-ubuntu-16_04-amd64]
-# image: registry.nic.cz/labs/bird:ubuntu-16.04-amd64
+pkg-ubuntu-16.04-amd64:
+ <<: *pkg-deb-legacy
+ needs: [build-ubuntu-16_04-amd64]
+ image: registry.nic.cz/labs/bird:ubuntu-16.04-amd64
-# pkg-ubuntu-18.04-amd64:
-# <<: *pkg-deb
-# needs: [build-ubuntu-18_04-amd64]
-# image: registry.nic.cz/labs/bird:ubuntu-18.04-amd64
+pkg-ubuntu-18.04-amd64:
+ <<: *pkg-deb-legacy
+ needs: [build-ubuntu-18_04-amd64]
+ image: registry.nic.cz/labs/bird:ubuntu-18.04-amd64
pkg-ubuntu-20.04-amd64:
<<: *pkg-deb
needs: [build-ubuntu-20_04-amd64]
image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64
-pkg-ubuntu-20.10-amd64:
- <<: *pkg-deb
- needs: [build-ubuntu-20_10-amd64]
- image: registry.nic.cz/labs/bird:ubuntu-20.10-amd64
-
-# pkg-ubuntu-21.04-amd64:
-# <<: *pkg-deb
-# needs: [build-ubuntu-21_04-amd64]
-# image: registry.nic.cz/labs/bird:ubuntu-21.04-amd64
-
-pkg-ubuntu-21.10-amd64:
- <<: *pkg-deb
- needs: [build-ubuntu-21_10-amd64]
- image: registry.nic.cz/labs/bird:ubuntu-21.10-amd64
-
pkg-ubuntu-22.04-amd64:
<<: *pkg-deb
needs: [build-ubuntu-22_04-amd64]
image: registry.nic.cz/labs/bird:ubuntu-22.04-amd64
-# pkg-ubuntu-22.10-amd64:
-# <<: *pkg-deb
-# needs: [build-ubuntu-22_10-amd64]
-# image: registry.nic.cz/labs/bird:ubuntu-22.10-amd64
+pkg-ubuntu-22.10-amd64:
+ <<: *pkg-deb
+ needs: [build-ubuntu-22_10-amd64]
+ image: registry.nic.cz/labs/bird:ubuntu-22.10-amd64
-# pkg-ubuntu-23.04-amd64:
-# <<: *pkg-deb
-# needs: [build-ubuntu-23_04-amd64]
-# image: registry.nic.cz/labs/bird:ubuntu-23.04-amd64
+pkg-ubuntu-23.04-amd64:
+ <<: *pkg-deb
+ needs: [build-ubuntu-23_04-amd64]
+ image: registry.nic.cz/labs/bird:ubuntu-23.04-amd64
-# pkg-ubuntu-23.10-amd64:
-# <<: *pkg-deb
-# needs: [build-ubuntu-23_10-amd64]
-# image: registry.nic.cz/labs/bird:ubuntu-23.10-amd64
+pkg-ubuntu-23.10-amd64:
+ <<: *pkg-deb
+ needs: [build-ubuntu-23_10-amd64]
+ image: registry.nic.cz/labs/bird:ubuntu-23.10-amd64
pkg-ubuntu-24.04-amd64:
<<: *pkg-deb
- gmake
- gmake check
+# There is no docker for BSD's, these are proper virtuals in QEMU.
+build-birdlab-freebsd-13:
+ <<: *build-birdlab-base
+ tags:
+ - birdlab-freebsd-13
+ - amd64
+
+build-birdlab-openbsd-71:
+ <<: *build-birdlab-base
+ variables:
+ AUTOCONF_VERSION: "2.71"
+ tags:
+ - birdlab-openbsd-71
+ - amd64
+
+# We have also some virtuals for these but there are working dockers as well
+# so no need to bother again
#build-birdlab-debian-11:
# <<: *build-birdlab-base
# tags:
# tags:
# - birdlab-centos-08
# - amd64
-
-build-birdlab-fedora-37:
- <<: *build-birdlab-base
- tags:
- - birdlab-fedora-37
- - amd64
-
-#build-birdlab-freebsd-13:
+#
+#build-birdlab-fedora-37:
# <<: *build-birdlab-base
# tags:
-# - birdlab-freebsd-13
+# - birdlab-fedora-37
# - amd64
-build-birdlab-openbsd-71:
- <<: *build-birdlab-base
- variables:
- AUTOCONF_VERSION: "2.71"
- tags:
- - birdlab-openbsd-71
- - amd64
+# Release confirmation job for tag pushing. As soon as we finish our web
+# deployment automatic machinery, clicking the button is expected to
+# publish the release info on our website.
+#
+# We are not there yet tho, too many other fish to fry.
-confirm-release:
+publish-release:
stage: release
script:
- "true"