]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
CI: Templated gitlab dockerfiles
authorMaria Matejka <mq@ucw.cz>
Mon, 23 Mar 2026 22:08:12 +0000 (23:08 +0100)
committerMaria Matejka <mq@ucw.cz>
Tue, 7 Apr 2026 09:50:51 +0000 (11:50 +0200)
This allows to add new distributions and mass-modify build environments
at a single place if any such need occurs. Also there is less risk that
some file is omitted if modifying multiple places in the same way.

There is also a check re-generating the templates in the CI and failing
immediately if they are not up-to-date.

49 files changed:
.gitignore
.gitlab-ci.yml
gitlab/Dockerfile.j2 [new file with mode: 0644]
gitlab/Makefile
gitlab/data.yml.j2
gitlab/docker.mk.j2 [new file with mode: 0644]
gitlab/docker/centos-8-amd64/Dockerfile
gitlab/docker/debian-10-amd64/Dockerfile [deleted file]
gitlab/docker/debian-10-i386/Dockerfile [deleted file]
gitlab/docker/debian-11-amd64/Dockerfile
gitlab/docker/debian-11-i386/Dockerfile
gitlab/docker/debian-12-amd64/Dockerfile
gitlab/docker/debian-12-i386/Dockerfile
gitlab/docker/debian-13-amd64/Dockerfile
gitlab/docker/debian-13-i386/Dockerfile
gitlab/docker/debian-testing-amd64/Dockerfile
gitlab/docker/debian-testing-i386/Dockerfile
gitlab/docker/fedora-32-amd64/Dockerfile
gitlab/docker/fedora-33-amd64/Dockerfile
gitlab/docker/fedora-34-amd64/Dockerfile
gitlab/docker/fedora-35-amd64/Dockerfile
gitlab/docker/fedora-36-amd64/Dockerfile
gitlab/docker/fedora-37-amd64/Dockerfile
gitlab/docker/fedora-38-amd64/Dockerfile
gitlab/docker/fedora-39-amd64/Dockerfile
gitlab/docker/fedora-40-amd64/Dockerfile
gitlab/docker/fedora-41-amd64/Dockerfile
gitlab/docker/fedora-42-amd64/Dockerfile
gitlab/docker/fedora-43-amd64/Dockerfile
gitlab/docker/opensuse-15.0-amd64/Dockerfile
gitlab/docker/opensuse-15.1-amd64/Dockerfile
gitlab/docker/opensuse-15.2-amd64/Dockerfile
gitlab/docker/opensuse-15.3-amd64/Dockerfile
gitlab/docker/opensuse-15.4-amd64/Dockerfile
gitlab/docker/opensuse-15.5-amd64/Dockerfile
gitlab/docker/opensuse-16.0-amd64/Dockerfile
gitlab/docker/oracle-08-amd64/Dockerfile
gitlab/docker/oracle-09-amd64/Dockerfile
gitlab/docker/oracle-10-amd64/Dockerfile
gitlab/docker/rocky-08-amd64/Dockerfile
gitlab/docker/rocky-09-amd64/Dockerfile
gitlab/docker/ubuntu-18.04-amd64/Dockerfile
gitlab/docker/ubuntu-20.04-amd64/Dockerfile
gitlab/docker/ubuntu-22.04-amd64/Dockerfile
gitlab/docker/ubuntu-24.04-amd64/Dockerfile
gitlab/docker/ubuntu-25.04-amd64/Dockerfile
gitlab/docker/ubuntu-25.10-amd64/Dockerfile
gitlab/pipeline.py
gitlab/template.yml.j2

index a50f1fceb2ab049f37e02da89cfa171472f4c55f..37f17f5670256d4adbd9791f3842c48acc3bfb1b 100644 (file)
@@ -14,3 +14,4 @@
 /sysdep/autoconf.h.in~
 /cscope.*
 *.tar.gz
+/gitlab/docker.mk
index 7df118b119477cf4e2fc22a87b4e6445cedd6638..b012b4384295fb75ba3f3d9e9b0de488df28f3cf 100644 (file)
@@ -208,6 +208,23 @@ pipeline-uptodate:
   rules:
   - !reference [ .default-rules ]
 
+## Build Docker consistency check
+docker-uptodate:
+  stage: consistency
+  image: registry.nic.cz/labs/bird:docbuilder
+  script:
+  - autoreconf -i
+  - ./configure
+  - touch gitlab/data.yml.j2
+  - make gitlab-docker VENV=1
+  - touch gitlab/docker/docbuilder/Dockerfile # Docbuilder is a static image, not rebuilt by the templates
+  - find gitlab/docker/ -type f -not -newer gitlab/data.yml.j2
+  - '[ "`find gitlab/docker/ -type f -not -newer gitlab/data.yml.j2 | wc -l`" == "0" ]'
+  - git status --porcelain
+  - git diff --exit-code
+  rules:
+  - !reference [ .default-rules ]
+
 ## Consistency checks for stable branches
 commit-messages:
   stage: consistency
@@ -251,6 +268,7 @@ tag-collect:
 
 .docker: &docker-build
   stage: image
+  needs: [] # docker-uptodate maybe?
   script:
   - $DOCKER_CMD login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.nic.cz
   # Make sure we refresh the base image if it updates (eg. security updates, etc)
@@ -1898,6 +1916,7 @@ install-ubuntu-25.10-amd64:
 .build-birdlab-base: &build-birdlab-base
   <<: *build-base
   stage: build
+  needs: []
 #  script:
 #    - export BRANCH=$CI_COMMIT_BRANCH
 #    - autoreconf
@@ -2053,6 +2072,7 @@ partial-build-linux-static:
 build-netlab:
   <<: *netlab-rules
   stage: build
+  needs: []
   variables:
     BDIR: build-netlab
   tags:
diff --git a/gitlab/Dockerfile.j2 b/gitlab/Dockerfile.j2
new file mode 100644 (file)
index 0000000..519e91e
--- /dev/null
@@ -0,0 +1,81 @@
+{% for distro in distros %}{% if distro.name == target -%}
+{% set d = distro.docker -%}
+{% if d == "static" %}{{ fail("Docker for " ~ target ~ " is static, edit that file directly and don't forget to commit the changes into Git.") }}{% endif -%}
+# Autogenerated Dockerfile for {{ target }}.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
+FROM {{ d.parent }}
+{%- if distro.type == "deb" %}
+ENV DEBIAN_FRONTEND=noninteractive
+RUN apt-get -y update
+RUN apt-get -y upgrade
+RUN apt-get -y --no-install-recommends install \
+       {% if distro.shortname == "ubuntu" %}tzdata \
+       {% endif %}build-essential \
+       flex \
+       bison \
+       autoconf \
+       ncurses-dev \
+       libreadline-dev \
+       {{ d.libssh_kind }}-dev \
+       linuxdoc-tools-latex \
+       texlive-latex-extra \
+       opensp \
+       docbook-xsl \
+       xsltproc{% if d.needs_adduser %} \
+       adduser{% endif %}
+RUN apt-get -y --no-install-recommends install \
+       git \
+       dpkg-dev \
+       debhelper \
+       lsb-release \
+       apt-utils \
+       quilt \
+       python3 \
+       python3-pip \
+       python3-setuptools \
+       python3-venv
+{%- elif distro.type == "rpm" %}
+{%- if d.preinstall %}
+{{ d.preinstall }}
+{%- endif %}
+RUN {{ d.installer }} up{% if d.installer[:6] != "zypper" %}grade{% endif %}
+RUN {{ d.installer }} install \
+       gcc \
+       make \
+       flex \
+       bison \
+       autoconf \
+       {%- if d.pkgconfig %}
+       pkgconfig \
+       {%- endif %}
+       libssh-devel \
+       ncurses-devel \
+       readline-devel
+RUN {{ d.installer }} install \
+       git \
+       {%- if d.alternative_lsb %}
+       {{ d.alternative_lsb }} \
+       {%- else %}
+       lsb-release \
+       {%- endif %}
+       rpm-build \
+       {%- if d.faketime == "lib" %}
+       libfaketime \
+       {%- elif d.faketime %}
+       faketime \
+       {%- endif %}
+       {%- if d.systemd %}
+       systemd \
+       {%- endif %}
+       systemd-rpm-macros \
+       {%- if d.sysuser %}
+       sysuser-tools \
+       {%- endif %}
+       python3 \
+       python3-pip \
+       python3-setuptools
+{%- endif %}
+{%- endif %}{% endfor %}
index c9cec6d46490d75da14531b4af12b6ce7c3d60d0..9d8fd2ca4f1a70bf060e89ffb78e50ba24ba0bc9 100644 (file)
@@ -4,10 +4,25 @@
 #$(s)%.yml: $(s)pipeline.py $(s)%.yml.j2 $(s)data.yml.j2
 .gitlab-ci.yml: $(s)pipeline.py $(s)template.yml.j2 $(s)data.yml.j2
        python3 $^ > $@
+       @if grep -n '   ' $@; then echo "Found a tab in yaml output!"; false; fi
 
 #gitlab-local: $(patsubst %,$(s)%.yml,$(GITLAB_SECTIONS))
 gitlab-local: .gitlab-ci.yml
 
+# Conditionally include Dockerfile build but only if required
+ifneq ($(filter gitlab-docker $(s)docker,$(MAKECMDGOALS)),)
+$(s)docker/%/Dockerfile: $(s)pipeline.py $(s)Dockerfile.j2 $(s)data.yml.j2
+       $(if $(VENV),$(MAKE) $(GITLAB_VENV))
+       mkdir -p $(dir $@)
+       $(if $(VENV),$(call VPYTHON,$(GITLAB_VENV)),python3) $^ target=$* > $@
+
+$(s)docker.mk: $(s)pipeline.py $(s)docker.mk.j2 $(s)data.yml.j2
+       $(if $(VENV),$(MAKE) $(GITLAB_VENV))
+       $(if $(VENV),$(call VPYTHON,$(GITLAB_VENV)),python3) $^ > $@
+
+include $(s)docker.mk
+endif
+
 VPYTHON = VIRTUAL_ENV=$(1) PATH="$(1)/bin:$$PATH" $(1)/bin/python3
 VPIP = VIRTUAL_ENV=$(1) PATH="$(1)/bin:$$PATH" $(1)/bin/pip3
 VRUN = VIRTUAL_ENV=$(1) PATH="$(1)/bin:$$PATH" $(2)
index 40a6625c8c71b80b9ba88ce643f205e5e29c2afd..2026408e62bf477b9b5a14fc5ea1a06937569edd 100644 (file)
@@ -11,39 +11,113 @@ distros:
       LC_ALL: en_US.UTF-8
       CC: /opt/rh/devtoolset-8/root/usr/bin/gcc
     type: rpm
+    docker: static
 
   - name: centos-8-amd64
     type: rpm
+    docker:
+      parent: 'centos:8'
+      installer: yum -y
+      alternative_lsb: redhat-lsb-core
+      systemd: false
+      preinstall: |
+        # Has to be done for yum to work properly. CentOS 8 is EOL.
+        RUN sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/CentOS-*.repo
+        RUN sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/CentOS-*.repo
+        RUN sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/CentOS-*.repo
 
   # Rocky and Oracle Linux, forks of CentOS/RHEL
-  {% for num in ('08','09') -%}
+  # check latest supported version at https://wiki.rockylinux.org/rocky/version/#__tabbed_1_2
+  {% for inum,snum in ((8,10),(9,5)) -%}
+  {% if inum >= 10 %}{% set num = inum ~ "" %}{% else %}{% set num = "0" ~ inum %}{% endif -%}
   - name: rocky-{{ num }}-amd64
     type: rpm
+    docker:
+      parent: 'rockylinux/rockylinux:{{ inum }}.{{snum}}'
+      installer: yum -y
+      {%- if num == "08" %}
+      alternative_lsb: redhat-lsb-core
+      systemd: false
+      {%- else %}
+      systemd: true
+      faketime: true
+      preinstall: 'RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ inum }}.noarch.rpm'
+      {%- endif %}
   {% endfor %}
-  {% for num in ('08','09','10') -%}
+  {% for inum in (8,9,10) -%}
+  {% if inum >= 10 %}{% set num = inum ~ "" %}{% else %}{% set num = "0" ~ inum %}{% endif -%}
   - name: oracle-{{ num }}-amd64
     type: rpm
+    docker:
+      parent: 'oraclelinux:{{ inum }}'
+      installer: yum -y
+      {%- if num == "08" %}
+      alternative_lsb: redhat-lsb-core
+      systemd: false
+      {%- else %}
+      systemd: true
+      faketime: true
+      preinstall: 'RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ inum }}.noarch.rpm'
+      {%- endif %}
   {% endfor %}
 
   # Last 7 years of OpenSUSE
   {% for num in (0,1,2,3,4,5) -%}
   - name: opensuse-15.{{ num }}-amd64
     type: rpm
+    docker:
+      parent: 'opensuse/leap:15.{{num}}'
+      installer: zypper -n
+      pkgconfig: true
+      systemd: true
+      faketime: lib
+      sysuser: true
   {% endfor %}
-  - name: opensuse-16.0-amd64
+  {% for num in (0,) -%}
+  - name: opensuse-16.{{ num }}-amd64
     type: rpm
+    docker:
+      parent: 'opensuse/leap:16.{{num}}'
+      installer: zypper -n
+      pkgconfig: true
+      systemd: true
+      faketime: lib
+      sysuser: true
+  {% endfor %}
 
   # Last 12 versions of Fedora
   {% for num in (32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43) -%}
   - name: fedora-{{ num }}-amd64
     type: rpm
+    docker:
+      parent: fedora:{{ num }}
+      installer: dnf -y
+      pkgconfig: true
+      faketime: true
+      {%- if num <= 36 %}
+      alternative_lsb: redhat-lsb-core
+      {%- endif %}
+      {%- if num > 32 %}
+      systemd: true
+      {%- endif %}
+
   {% endfor %}
 
   # Debian from oldoldstable up to testing
-  {% for num in (11, 12, 13, 'testing') -%}
+  {% for num, codename in (
+    (11, "bullseye"),
+    (12, "bookworm"),
+    (13, "trixie"),
+    ("testing", "testing")
+    ) -%}
   {% for arch in ('amd64', 'i386') -%}
   - name: debian-{{num}}-{{arch}}
     type: deb
+    shortname: debian
+    docker:
+      parent: {{ arch }}/debian:{{ codename }}-slim
+      libssh_kind: {% if (num != "testing") and (num < 13) %}libssh-gcrypt{% else %}libssh{% endif %}
+      needs_adduser: {% if (num != "testing") and (num < 13) %}false{% else %}true{% endif %}
   {% endfor %}
   {% endfor %}
 
@@ -51,6 +125,11 @@ distros:
   {% for num in ('18.04', '20.04', '22.04', '24.04', '25.04', '25.10') -%}
   - name: ubuntu-{{ num }}-amd64
     type: deb
+    shortname: ubuntu
+    docker:
+      parent: "ubuntu:{{ num }}"
+      libssh_kind: {% if (num[:2] | int) < 25 %}libssh-gcrypt{% else %}libssh{% endif %}
+      needs_adduser: {% if (num[:2] | int) > 22 %}true{% else %}false{% endif %}
   {% endfor %}
 
 birdlab:
diff --git a/gitlab/docker.mk.j2 b/gitlab/docker.mk.j2
new file mode 100644 (file)
index 0000000..4bdb883
--- /dev/null
@@ -0,0 +1,15 @@
+GITLAB_DOCKER_IMAGES := \
+{% for distro in distros -%}
+       $(s)docker/{{ distro.name }}/Dockerfile \
+{% endfor %}
+
+gitlab-docker: $(GITLAB_DOCKER_IMAGES)
+
+{% for distro in distros -%}
+{% if distro.docker == "static" %}
+$(s)docker/{{ distro.name }}/Dockerfile: $(s)docker.mk.j2 $(s)data.yml.j2
+       @echo "KEEP $@ (marked as static)"
+       touch $@
+
+{% endif %}
+{% endfor %}
index b20386d7e77b7fb7ecbacb1d731ce905cdc82148..076335c9dc2679497f61b7ffe8d27cb5bda99367 100644 (file)
@@ -1,6 +1,9 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for centos-8-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM centos:8
-
 # Has to be done for yum to work properly. CentOS 8 is EOL.
 RUN sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/CentOS-*.repo
 RUN sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/CentOS-*.repo
@@ -18,8 +21,8 @@ RUN yum -y install \
        readline-devel
 RUN yum -y install \
        git \
-       rpm-build \
        redhat-lsb-core \
+       rpm-build \
        systemd-rpm-macros \
        python3 \
        python3-pip \
diff --git a/gitlab/docker/debian-10-amd64/Dockerfile b/gitlab/docker/debian-10-amd64/Dockerfile
deleted file mode 100644 (file)
index 9e11c53..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-# bump number for image rebuild: 0
-FROM debian:buster-slim
-ENV DEBIAN_FRONTEND=noninteractive
-RUN apt-get -y update
-RUN apt-get -y upgrade
-RUN apt-get -y --no-install-recommends install \
-       build-essential \
-       flex \
-       bison \
-       autoconf \
-       ncurses-dev \
-       libreadline-dev \
-       libssh-gcrypt-dev \
-       linuxdoc-tools-latex \
-       texlive-latex-extra \
-       opensp \
-       docbook-xsl \
-       xsltproc
-RUN apt-get -y --no-install-recommends install \
-       git \
-       dpkg-dev \
-       debhelper \
-       lsb-release \
-       quilt \
-       python3 \
-       python3-pip \
-       python3-setuptools \
-       python3-venv
diff --git a/gitlab/docker/debian-10-i386/Dockerfile b/gitlab/docker/debian-10-i386/Dockerfile
deleted file mode 100644 (file)
index 638df92..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-# bump number for image rebuild: 0
-FROM i386/debian:buster-slim
-ENV DEBIAN_FRONTEND=noninteractive
-RUN apt-get -y update
-RUN apt-get -y upgrade
-RUN apt-get -y --no-install-recommends install \
-       build-essential \
-       flex \
-       bison \
-       autoconf \
-       ncurses-dev \
-       libreadline-dev \
-       libssh-gcrypt-dev \
-       linuxdoc-tools-latex \
-       texlive-latex-extra \
-       opensp \
-       docbook-xsl \
-       xsltproc
-RUN apt-get -y --no-install-recommends install \
-       git \
-       dpkg-dev \
-       debhelper \
-       lsb-release \
-       apt-utils \
-       quilt \
-       python3 \
-       python3-pip \
-       python3-setuptools \
-       python3-venv
index 2a5fa3a800c52e770d6536e9ff496bcb8bc7cc3f..d540124f4d8b1329294cd9cf64cfd50da87baecb 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for debian-11-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM amd64/debian:bullseye-slim
 ENV DEBIAN_FRONTEND=noninteractive
 RUN apt-get -y update
index 0878eb7d8d510e41ffb2e9fc0e10344fc8ecb4af..3ba68cd656761074edd8abaf64525074b616626d 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 1
+# Autogenerated Dockerfile for debian-11-i386.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM i386/debian:bullseye-slim
 ENV DEBIAN_FRONTEND=noninteractive
 RUN apt-get -y update
index 34f2c40d8e604c770208c5f0bb02e73d21f245a8..9ff3ec26477d7beb4a06c7b8af65cea013e6b2b7 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 2
+# Autogenerated Dockerfile for debian-12-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM amd64/debian:bookworm-slim
 ENV DEBIAN_FRONTEND=noninteractive
 RUN apt-get -y update
index 5f6b56d601d4d4d56fd41c43347cfbb24a8db69d..c3783440be78cd9617b70d0d688be07394142096 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 1
+# Autogenerated Dockerfile for debian-12-i386.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM i386/debian:bookworm-slim
 ENV DEBIAN_FRONTEND=noninteractive
 RUN apt-get -y update
index 9b6db59aef419beca15d3559e509eb9d54761286..547fab7cc5d91b9ce3e6406ce35a9821faed2524 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 3
+# Autogenerated Dockerfile for debian-13-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM amd64/debian:trixie-slim
 ENV DEBIAN_FRONTEND=noninteractive
 RUN apt-get -y update
index d1c54b08f53ee1d07b4029fe4f6bb929dfb238f1..d02b2329904fb385f07aa2614ff30dfeec8e8d98 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 2
+# Autogenerated Dockerfile for debian-13-i386.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM i386/debian:trixie-slim
 ENV DEBIAN_FRONTEND=noninteractive
 RUN apt-get -y update
index 625f4774a7fea53992bb6c4b494d135e4599327c..e70eb39c5c51fea99e6fae811b1434502e3a1eea 100644 (file)
@@ -1,6 +1,10 @@
-# bump number for image rebuild: 0
-FROM debian:testing-slim
-ENV DEBIAN_FRONTEND noninteractive
+# Autogenerated Dockerfile for debian-testing-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
+FROM amd64/debian:testing-slim
+ENV DEBIAN_FRONTEND=noninteractive
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
index fa8c0deaedf9de829fcc865b8737a3f8555c2a90..cae195d927feb1a4f6781587917910e8be0514de 100644 (file)
@@ -1,6 +1,10 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for debian-testing-i386.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM i386/debian:testing-slim
-ENV DEBIAN_FRONTEND noninteractive
+ENV DEBIAN_FRONTEND=noninteractive
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
index 4e50d654d347f3d06fc122a470aec69ba5c2704a..8f4e591f47eac660421301222a6f236d7ff76fdd 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for fedora-32-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM fedora:32
 RUN dnf -y upgrade
 RUN dnf -y install \
index 749b53ee2dee7131fc4eb1c3e3c5c32514fe63f9..85d64bb076c6c762bf3d7aa6a69d6f640538de73 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for fedora-33-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM fedora:33
 RUN dnf -y upgrade
 RUN dnf -y install \
index d3f9ad2c530472dad46f0119a0c7b527d5ef3385..a9c58808077151973b836ae341687773ea0784e3 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for fedora-34-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM fedora:34
 RUN dnf -y upgrade
 RUN dnf -y install \
index 32e3aed7250ae4e4dbcc9a11df950d9af0ed6989..21477ab26ce10915757fd4467415e85a082a6079 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for fedora-35-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM fedora:35
 RUN dnf -y upgrade
 RUN dnf -y install \
index 22f5bd4625c4e46ced8cd414af976d6befce7f8a..0a902e4505cf3f761de56161d368478c14285194 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for fedora-36-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM fedora:36
 RUN dnf -y upgrade
 RUN dnf -y install \
index a43627a00023f8461458584b446854744ac22401..1084d1ae6af6486f62bc5b7ccfb91f410f4664f3 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for fedora-37-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM fedora:37
 RUN dnf -y upgrade
 RUN dnf -y install \
index 2614b8db9607eb228dbb4f7137d559b9c21b3f52..53565b85dd0bdd8b06fb9b12794f4c828e766347 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for fedora-38-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM fedora:38
 RUN dnf -y upgrade
 RUN dnf -y install \
index 2551bb3c3df98678cc5057c53fd0d2f13ff8524b..b4d9e27a9d155aaa06e0c314927d98cf80f2c7f6 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for fedora-39-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM fedora:39
 RUN dnf -y upgrade
 RUN dnf -y install \
index e95795fd7d434d50912560efea7341a7b3aab640..bfeaf9d0f45061e58a121c6210b67c34877ee6e4 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for fedora-40-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM fedora:40
 RUN dnf -y upgrade
 RUN dnf -y install \
index bf58f100dbe108800e5c7103cb57c7760c0d1028..e2f2b4fb065b4938138da2742012863c3412f77e 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for fedora-41-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM fedora:41
 RUN dnf -y upgrade
 RUN dnf -y install \
index 782f8474a7ad81247bf3c491ae315c436ddd4179..bb338796d13c3d1da3de4ec7dc57f7377c90e01a 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for fedora-42-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM fedora:42
 RUN dnf -y upgrade
 RUN dnf -y install \
index 9f7f38221f220df357b9b2b1d691d8a5e0bd4a08..b217c71bfc21f793fdecfb3add130226718885c5 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 1
+# Autogenerated Dockerfile for fedora-43-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM fedora:43
 RUN dnf -y upgrade
 RUN dnf -y install \
index daf9f315bada5ebfddff0b6ee545c6d601faa590..e715b25f316037698264399c757b4f04aaf021bb 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for opensuse-15.0-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM opensuse/leap:15.0
 RUN zypper -n up
 RUN zypper -n install \
@@ -18,7 +22,7 @@ RUN zypper -n install \
        libfaketime \
        systemd \
        systemd-rpm-macros \
+       sysuser-tools \
        python3 \
        python3-pip \
-       python3-setuptools \
-       sysuser-tools
+       python3-setuptools
index a4c28e0878f6fcd9ab055af385791cdd0fa6308b..3d00315389d271b4aa788c628621b106d7359506 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for opensuse-15.1-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM opensuse/leap:15.1
 RUN zypper -n up
 RUN zypper -n install \
@@ -18,7 +22,7 @@ RUN zypper -n install \
        libfaketime \
        systemd \
        systemd-rpm-macros \
+       sysuser-tools \
        python3 \
        python3-pip \
-       python3-setuptools \
-       sysuser-tools
+       python3-setuptools
index b380d0d3ae37966244a9a022e8ffd1ca939d6951..5269d945c7385136f7df11157fae8f308523fe23 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for opensuse-15.2-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM opensuse/leap:15.2
 RUN zypper -n up
 RUN zypper -n install \
@@ -18,7 +22,7 @@ RUN zypper -n install \
        libfaketime \
        systemd \
        systemd-rpm-macros \
+       sysuser-tools \
        python3 \
        python3-pip \
-       python3-setuptools \
-       sysuser-tools
+       python3-setuptools
index c0d6858df3e657816e338ac75508f69532ea9661..dc6688b99af989083814a8c35d48ac9f0a699265 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for opensuse-15.3-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM opensuse/leap:15.3
 RUN zypper -n up
 RUN zypper -n install \
@@ -18,7 +22,7 @@ RUN zypper -n install \
        libfaketime \
        systemd \
        systemd-rpm-macros \
+       sysuser-tools \
        python3 \
        python3-pip \
-       python3-setuptools \
-       sysuser-tools
+       python3-setuptools
index 1edd0012cab422fe79ca8837f9aba6502e6f08e4..2c1a15b5fe23f6f1ec52eaea27cbfeb6d3610cf2 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 1
+# Autogenerated Dockerfile for opensuse-15.4-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM opensuse/leap:15.4
 RUN zypper -n up
 RUN zypper -n install \
@@ -18,7 +22,7 @@ RUN zypper -n install \
        libfaketime \
        systemd \
        systemd-rpm-macros \
+       sysuser-tools \
        python3 \
        python3-pip \
-       python3-setuptools \
-       sysuser-tools
+       python3-setuptools
index ec5340572320c813c0f083229a29b7c178de3f8f..2a444957b55b281abd94979ddf407c0ae879ca42 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for opensuse-15.5-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM opensuse/leap:15.5
 RUN zypper -n up
 RUN zypper -n install \
@@ -18,7 +22,7 @@ RUN zypper -n install \
        libfaketime \
        systemd \
        systemd-rpm-macros \
+       sysuser-tools \
        python3 \
        python3-pip \
-       python3-setuptools \
-       sysuser-tools
+       python3-setuptools
index 08edcb3c4926221e957c7783df198072b24191e7..82f88d12fb9305262fc5865946607898aa4d15c9 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for opensuse-16.0-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM opensuse/leap:16.0
 RUN zypper -n up
 RUN zypper -n install \
@@ -18,7 +22,7 @@ RUN zypper -n install \
        libfaketime \
        systemd \
        systemd-rpm-macros \
+       sysuser-tools \
        python3 \
        python3-pip \
-       python3-setuptools \
-       sysuser-tools
+       python3-setuptools
index 6bbd32e1247b255b11c9ee07343ae964c12b3a4f..8840d0aa14c182baca34d815a62cb2f5223abf50 100644 (file)
@@ -1,7 +1,9 @@
-# bump number for image rebuild: 1
-# check latest supported version at https://wiki.rockylinux.org/rocky/version/#__tabbed_1_1
+# Autogenerated Dockerfile for oracle-08-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM oraclelinux:8
-
 RUN yum -y upgrade
 RUN yum -y install \
        gcc \
index 5df514c097e7d089e735ba353fc2b79ba91ef201..e98dcc737b28be68b5831b7ce127a27ff3a013e5 100644 (file)
@@ -1,9 +1,10 @@
-# bump number for image rebuild: 1
-# check latest supported version at https://wiki.rockylinux.org/rocky/version/#__tabbed_1_2
+# Autogenerated Dockerfile for oracle-09-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM oraclelinux:9
-
 RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
-
 RUN yum -y upgrade
 RUN yum -y install \
        gcc \
index 3141b364c5f03c0de6d1eff977151a92178e29b6..98c0d0a00cec8bdf12680291c4267784e9df156b 100644 (file)
@@ -1,9 +1,10 @@
-# bump number for image rebuild: 1
-# check latest supported version at https://wiki.rockylinux.org/rocky/version/#__tabbed_1_2
+# Autogenerated Dockerfile for oracle-10-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM oraclelinux:10
-
 RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm
-
 RUN yum -y upgrade
 RUN yum -y install \
        gcc \
index d1e3146410f36e4a09e69b0b2f44624d1997d1c6..ba16cfcd31e50530d34ea685d3b6b4f8ecefda05 100644 (file)
@@ -1,7 +1,9 @@
-# bump number for image rebuild: 1
-# check latest supported version at https://wiki.rockylinux.org/rocky/version/#__tabbed_1_1
+# Autogenerated Dockerfile for rocky-08-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM rockylinux/rockylinux:8.10
-
 RUN yum -y upgrade
 RUN yum -y install \
        gcc \
index 6d1d71fc9544b8d9acd280f76becdad4f3af8dc0..cf008bc6f8bef56b7e1284af5ceb658c4bcf1149 100644 (file)
@@ -1,9 +1,10 @@
-# bump number for image rebuild: 1
-# check latest supported version at https://wiki.rockylinux.org/rocky/version/#__tabbed_1_2
+# Autogenerated Dockerfile for rocky-09-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM rockylinux/rockylinux:9.5
-
 RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
-
 RUN yum -y upgrade
 RUN yum -y install \
        gcc \
index 9a60f527936530acdcb9d4d5b8234dcacd3718e4..f1c78ac6e786afc39bff94c63f4cda3cf8c103bd 100644 (file)
@@ -1,6 +1,10 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for ubuntu-18.04-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM ubuntu:18.04
-ENV DEBIAN_FRONTEND noninteractive
+ENV DEBIAN_FRONTEND=noninteractive
 RUN apt-get -y update
 RUN apt-get -y upgrade
 RUN apt-get -y --no-install-recommends install \
index 2870603b761bf81cb9dc718f3ad66009e962f2f6..893fa719f71f72052a58530f4c817fa91924f4d8 100644 (file)
@@ -1,4 +1,8 @@
-# bump number for image rebuild: 0
+# Autogenerated Dockerfile for ubuntu-20.04-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM ubuntu:20.04
 ENV DEBIAN_FRONTEND=noninteractive
 RUN apt-get -y update
index fcee7e7b1ec198c1dfc477817519a94a6fed3cb5..71bbf5fef59457dbc687ad5fba3feb26dc9c807a 100644 (file)
@@ -1,4 +1,8 @@
-# bump this to refresh the image: 1
+# Autogenerated Dockerfile for ubuntu-22.04-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM ubuntu:22.04
 ENV DEBIAN_FRONTEND=noninteractive
 RUN apt-get -y update
index ed17073931c61ddf533d1804a9068afec79ce541..87fc727b6b805a79002a7c94f46d9eca0cdeaee1 100644 (file)
@@ -1,4 +1,8 @@
-# bump this to refresh the image: 1
+# Autogenerated Dockerfile for ubuntu-24.04-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM ubuntu:24.04
 ENV DEBIAN_FRONTEND=noninteractive
 RUN apt-get -y update
index 3cd569cf88801821e111fb352753e55d63c367b2..fdf8246855cef6e2bd5f01cd921d253f0601cc85 100644 (file)
@@ -1,4 +1,8 @@
-# bump this to refresh the image: 1
+# Autogenerated Dockerfile for ubuntu-25.04-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM ubuntu:25.04
 ENV DEBIAN_FRONTEND=noninteractive
 RUN apt-get -y update
index 3754834f0a616a1d5a3e9265116d701fb03a9c7f..0ec61be7773b2a6d9adbe5f8385ffc22a8cb7b93 100644 (file)
@@ -1,4 +1,8 @@
-# bump this to refresh the image: 1
+# Autogenerated Dockerfile for ubuntu-25.10-amd64.
+# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2
+# to change this file.
+# Request a manual pipeline to rebuild the image here:
+#     https://gitlab.nic.cz/labs/bird/-/pipelines/new
 FROM ubuntu:25.10
 ENV DEBIAN_FRONTEND=noninteractive
 RUN apt-get -y update
index f7c51b7bc21a8e446ce4b6728fa046960d9f421c..0a5975570efff5dd5435353872d8c1bf0bea9b24 100755 (executable)
@@ -8,10 +8,16 @@ import sys
 import yaml
 
 # Find where we are
-_, template_file, data_file, *_ = sys.argv
+_, template_file, data_file, *more = sys.argv
+hm = { k: v for k,v in [ x.split("=", 1) for x in more ] }
+
+# Crash helper
+def fail(msg):
+    raise Exception(msg)
 
 # Prepare Jinja2 environment
 env = jinja2.Environment(loader=jinja2.FileSystemLoader("."))
+env.globals['fail'] = fail
 env.filters.update({ "to_yaml": lambda x: "" if type(x) is jinja2.runtime.Undefined else yaml.dump(x).rstrip() })
 
 # Load and process input data
@@ -26,10 +32,7 @@ except yaml.parser.ParserError as e:
 template = env.get_template(template_file)
 
 # Render the template
-final = template.render({ **data })
-
-# YAML is picky about tabs, forbid them
-assert('\t' not in final)
+final = template.render({ **data, **hm })
 
 # Produce output
 print(final)
index c58cac923ee8313159ad47c43d6a782384660467..91c6af032e140b33886eb8e711bfe83778b21af0 100644 (file)
@@ -195,6 +195,23 @@ pipeline-uptodate:
   rules:
   - !reference [ .default-rules ]
 
+## Build Docker consistency check
+docker-uptodate:
+  stage: consistency
+  image: registry.nic.cz/labs/bird:docbuilder
+  script:
+  - autoreconf -i
+  - ./configure
+  - touch gitlab/data.yml.j2
+  - make gitlab-docker VENV=1
+  - touch gitlab/docker/docbuilder/Dockerfile # Docbuilder is a static image, not rebuilt by the templates
+  - find gitlab/docker/ -type f -not -newer gitlab/data.yml.j2
+  - '[ "`find gitlab/docker/ -type f -not -newer gitlab/data.yml.j2 | wc -l`" == "0" ]'
+  - git status --porcelain
+  - git diff --exit-code
+  rules:
+  - !reference [ .default-rules ]
+
 ## Consistency checks for stable branches
 commit-messages:
   stage: consistency
@@ -236,6 +253,7 @@ tag-collect:
 
 .docker: &docker-build
   stage: image
+  needs: [] # docker-uptodate maybe?
   script:
   - $DOCKER_CMD login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.nic.cz
   # Make sure we refresh the base image if it updates (eg. security updates, etc)
@@ -485,6 +503,7 @@ install-{{ dist["name"] }}:
 .build-birdlab-base: &build-birdlab-base
   <<: *build-base
   stage: build
+  needs: []
 #  script:
 #    - export BRANCH=$CI_COMMIT_BRANCH
 #    - autoreconf
@@ -533,6 +552,7 @@ partial-build-linux-{{ test["protocols"] }}:
 build-netlab:
   <<: *netlab-rules
   stage: build
+  needs: []
   variables:
     BDIR: build-netlab
   tags: