0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-22 09:41:54 +00:00
bird/.gitlab-ci.yml
Maria Matejka da4a32129a CI: test building single protocols
Several users build BIRD with excluded support for protocols they don't
need. Testing single-protocol builds; the assumption is that if single
protocols and all protocols are buildable, then possibly any reasonable
combination is buildable as well.
2024-12-17 09:01:26 +01:00

642 lines
14 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

variables:
DEBIAN_FRONTEND: noninteractive
LC_ALL: C.UTF-8
GIT_STRATEGY: fetch
DOCKER_CMD: docker --config="$HOME/.docker/$CI_JOB_ID/"
IMG_BASE: registry.nic.cz/labs/bird
TOOLS_DIR: /home/gitlab-runner/bird-tools
STAYRTR_BINARY: /usr/bin/stayrtr
stages:
# - image
- build
- pkg
- test
.docker: &docker_build
stage: image
allow_failure: true
script:
- $DOCKER_CMD login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.nic.cz
# Make sure we refresh the base image if it updates (eg. security updates, etc)
# If we do just the build, cache is always reused and the freshness of the
# base image is never checked. However, pull always asks and updates the
# image only if it changed therefore, the cache is used unless there's a
# change.
- $DOCKER_CMD pull `sed -ne 's/^FROM //p' "misc/docker/$IMG_NAME/Dockerfile"`
- $DOCKER_CMD build -t "bird:$IMG_NAME" "misc/docker/$IMG_NAME"
- $DOCKER_CMD tag "bird:$IMG_NAME" "$IMG_BASE:$IMG_NAME"
- $DOCKER_CMD push "$IMG_BASE:$IMG_NAME"
after_script:
- rm -f "$HOME/.docker/$CI_JOB_ID/" # cleanup the credentials
tags:
# That's Docker in Docker
- dind
# Docker build example
#docker_debian-11-amd64:
# variables:
# IMG_NAME: "debian-11-amd64"
# <<: *docker_build
.build: &build-base
stage: build
script:
- autoreconf
- ./configure CPPFLAGS="$CPPFLAGS" LDFLAGS="$LDFLAGS" $CONFIGURE_OPTIONS
# Detect which make is available
- MAKE=make
- which gmake 2>/dev/null >/dev/null && MAKE=gmake
- $MAKE
- $MAKE check
# Build docs when tools are available
- if which linuxdoc pdflatex >/dev/null ; then $MAKE docs ; fi
.build-linux: &build-linux
<<: *build-base
tags:
- docker
- linux
- amd64
build-debian-9-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-9-amd64
build-debian-9-i386:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-9-i386
build-debian-10-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-10-amd64
build-debian-10-i386:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-10-i386
build-debian-11-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
#build-debian-11-i386:
# <<: *build-linux
# image: registry.nic.cz/labs/bird:debian-11-i386
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-fedora-25-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:fedora-25-amd64
build-fedora-26-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:fedora-26-amd64
build-fedora-27-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:fedora-27-amd64
build-fedora-28-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:fedora-28-amd64
build-fedora-29-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:fedora-29-amd64
build-fedora-30-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:fedora-30-amd64
build-fedora-31-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:fedora-31-amd64
build-fedora-32-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:fedora-32-amd64
build-fedora-33-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:fedora-33-amd64
build-fedora-34-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:fedora-33-amd64
#build-centos-7-amd64:
# <<: *build-linux
# image: registry.nic.cz/labs/bird:centos-7-amd64
build-centos-8-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:centos-8-amd64
build-ubuntu-16_04-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:ubuntu-16.04-amd64
build-ubuntu-18_04-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:ubuntu-18.04-amd64
build-ubuntu-20_04-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64
build-ubuntu-21_10-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:ubuntu-21.10-amd64
#build-ubuntu-21_04-amd64:
# <<: *build-linux
# image: registry.nic.cz/labs/bird:ubuntu-21.04-amd64
build-opensuse-15.0-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:opensuse-15.0-amd64
build-opensuse-15.1-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:opensuse-15.1-amd64
build-opensuse-15.2-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:opensuse-15.2-amd64
build-opensuse-15.3-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:opensuse-15.3-amd64
#build-freebsd-11-amd64:
# <<: *build-base
# tags:
# - freebsd
# - amd64
#build-freebsd-11-i386:
# <<: *build-base
# tags:
# - freebsd
# - i386
build-only-aggregator-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=aggregator
build-only-babel-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=babel
build-only-bgp-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=bgp
build-only-bgp-bfd-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=bgp,bfd
build-only-bgp-bmp-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=bgp,bmp
build-only-bgp-bmp-bfd-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=bgp,bmp,bfd
build-only-l3vpn-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=l3vpn
build-only-bgp-mrt-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=bgp,mrt
build-only-bgp-mrt-bfd-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=bgp,mrt,bfd
build-only-bgp-mrt-bmp-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=bgp,mrt,bmp
build-only-bgp-mrt-bmp-bfd-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=bgp,mrt,bmp,bfd
build-only-ospf-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=ospf
build-only-ospf-bfd-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=ospf,bfd
build-only-pipe-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=pipe
build-only-radv-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=radv
build-only-rip-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=rip
build-only-rip-bfd-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=rip,bfd
build-only-rpki-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=rpki
build-only-static-amd64:
<<: *build-linux
image: registry.nic.cz/labs/bird:debian-11-amd64
variables:
CONFIGURE_OPTIONS: --with-protocols=static
.pkg-deb: &pkg-deb
stage: pkg
script:
- pip3 install apkg
- apkg build
#- apkg install -y pkg/pkgs/*/*/*.deb
artifacts:
paths:
- pkg/pkgs/*
.pkg-rpm: &pkg-rpm
stage: pkg
script:
- pip3 install apkg
- apkg build
#- apkg install -y pkg/pkgs/*/*/*.rpm
artifacts:
paths:
- pkg/pkgs/*
.pkg-rpm-wa: &pkg-rpm-wa
stage: pkg
script:
- sed -i "s/runstatedir/with-runtimedir/" distro/pkg/rpm/bird.spec
- pip3 install apkg
- apkg build
#- apkg install -y pkg/pkgs/*/*/*.rpm
artifacts:
paths:
- pkg/pkgs/*
pkg-debian-10-amd64:
<<: *pkg-deb
needs: [build-debian-10-amd64]
image: registry.nic.cz/labs/bird:debian-10-amd64
pkg-debian-10-i386:
<<: *pkg-deb
needs: [build-debian-10-i386]
image: registry.nic.cz/labs/bird:debian-10-i386
pkg-debian-11-amd64:
<<: *pkg-deb
needs: [build-debian-11-amd64]
image: registry.nic.cz/labs/bird:debian-11-amd64
pkg-fedora-30-amd64:
<<: *pkg-rpm-wa
needs: [build-fedora-30-amd64]
image: registry.nic.cz/labs/bird:fedora-30-amd64
pkg-fedora-31-amd64:
<<: *pkg-rpm-wa
needs: [build-fedora-31-amd64]
image: registry.nic.cz/labs/bird:fedora-31-amd64
pkg-fedora-32-amd64:
<<: *pkg-rpm-wa
needs: [build-fedora-32-amd64]
image: registry.nic.cz/labs/bird:fedora-32-amd64
pkg-fedora-33-amd64:
<<: *pkg-rpm-wa
needs: [build-fedora-33-amd64]
image: registry.nic.cz/labs/bird:fedora-33-amd64
pkg-fedora-34-amd64:
<<: *pkg-rpm
needs: [build-fedora-34-amd64]
image: registry.nic.cz/labs/bird:fedora-34-amd64
#pkg-centos-7-amd64:
# <<: *pkg-rpm-wa
# variables:
# LC_ALL: en_US.UTF-8
# needs: [build-centos-7-amd64]
# image: registry.nic.cz/labs/bird:centos-7-amd64
pkg-centos-8-amd64:
<<: *pkg-rpm-wa
needs: [build-centos-8-amd64]
image: registry.nic.cz/labs/bird:centos-8-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-20.04-amd64:
<<: *pkg-deb
needs: [build-ubuntu-20_04-amd64]
image: registry.nic.cz/labs/bird:ubuntu-20.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-21.04-amd64:
# <<: *pkg-deb
# needs: [build-ubuntu-21_04-amd64]
# image: registry.nic.cz/labs/bird:ubuntu-21.04-amd64
pkg-opensuse-15.1-amd64:
<<: *pkg-rpm-wa
needs: [build-opensuse-15.1-amd64]
image: registry.nic.cz/labs/bird:opensuse-15.1-amd64
pkg-opensuse-15.2-amd64:
<<: *pkg-rpm-wa
needs: [build-opensuse-15.2-amd64]
image: registry.nic.cz/labs/bird:opensuse-15.2-amd64
pkg-opensuse-15.3-amd64:
<<: *pkg-rpm-wa
needs: [build-opensuse-15.3-amd64]
image: registry.nic.cz/labs/bird:opensuse-15.3-amd64
build-netlab:
stage: build
tags:
- netlab
- amd64
script:
- DIR=$(pwd)
- autoreconf
- ./configure
- make
- cd $TOOLS_DIR
- sudo git clean -fx
- git pull --ff-only
- mv $DIR/bird $DIR/birdc netlab/common
- ln -s $STAYRTR_BINARY netlab/common/stayrtr
.test: &test-base
stage: test
needs: [build-netlab]
tags:
- netlab
- amd64
script:
- cd $TOOLS_DIR/netlab
- sudo ./stop
- sudo ./runtest -s v2 -m check $TEST_NAME
test-ospf-base:
<<: *test-base
variables:
TEST_NAME: cf-ospf-base
test-ospf-default:
<<: *test-base
variables:
TEST_NAME: cf-ospf-default
test-ospf-priority:
<<: *test-base
variables:
TEST_NAME: cf-ospf-priority
test-ospf-nbma:
<<: *test-base
variables:
TEST_NAME: cf-ospf-nbma
test-ospf-ptmp:
<<: *test-base
variables:
TEST_NAME: cf-ospf-ptmp
test-ospf-authentication:
<<: *test-base
variables:
TEST_NAME: cf-ospf-authentication
test-ospf-bfd:
<<: *test-base
variables:
TEST_NAME: cf-ospf-bfd
test-ospf-custom:
<<: *test-base
variables:
TEST_NAME: cf-ospf-custom
test-ospf-area:
<<: *test-base
variables:
TEST_NAME: cf-ospf-area
test-ospf-vrf:
<<: *test-base
variables:
TEST_NAME: cf-ospf-vrf
test-bgp-base:
<<: *test-base
variables:
TEST_NAME: cf-bgp-base
test-bgp-auth:
<<: *test-base
variables:
TEST_NAME: cf-bgp-auth
test-bgp-int:
<<: *test-base
variables:
TEST_NAME: cf-bgp-int
test-bgp-merged:
<<: *test-base
variables:
TEST_NAME: cf-bgp-merged
test-bgp-flowspec:
<<: *test-base
variables:
TEST_NAME: cf-bgp-flowspec
test-bgp-rs-multitab:
<<: *test-base
variables:
TEST_NAME: cf-bgp-rs-multitab
test-ebgp-loop:
<<: *test-base
variables:
TEST_NAME: cf-ebgp-loop
test-ebgp-star:
<<: *test-base
variables:
TEST_NAME: cf-ebgp-star
test-ebgp-role:
<<: *test-base
variables:
TEST_NAME: cf-ebgp-role
test-ebgp-graceful:
<<: *test-base
variables:
TEST_NAME: cf-ebgp-graceful
test-ebgp-import-limit:
<<: *test-base
variables:
TEST_NAME: cf-ebgp-import-limit
test-ibgp-loop:
<<: *test-base
variables:
TEST_NAME: cf-ibgp-loop
test-ibgp-loop-big:
<<: *test-base
variables:
TEST_NAME: cf-ibgp-loop-big
test-ibgp-flat:
<<: *test-base
variables:
TEST_NAME: cf-ibgp-flat
test-babel-base:
<<: *test-base
variables:
TEST_NAME: cf-babel-base
test-babel-auth:
<<: *test-base
variables:
TEST_NAME: cf-babel-auth
test-rip-base:
<<: *test-base
variables:
TEST_NAME: cf-rip-base
test-kernel-learn:
<<: *test-base
variables:
TEST_NAME: cf-kernel-learn
test-mpls-bgp:
<<: *test-base
variables:
TEST_NAME: cf-mpls-bgp
test-mpls-bgp-l3vpn:
<<: *test-base
variables:
TEST_NAME: cf-mpls-bgp-l3vpn
.build-birdlab-base: &build-birdlab-base
stage: build
script:
- autoreconf
- ./configure
- gmake
- gmake check
build-birdlab-debian-11:
<<: *build-birdlab-base
tags:
- birdlab-debian-11
- amd64
build-birdlab-centos-08:
<<: *build-birdlab-base
tags:
- birdlab-centos-08
- amd64
build-birdlab-fedora-37:
<<: *build-birdlab-base
tags:
- birdlab-fedora-37
- amd64
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