summaryrefslogtreecommitdiffstats
path: root/docker/ubuntu-ci
diff options
context:
space:
mode:
authorDaniel Baumann <daniel@debian.org>2024-11-09 14:26:35 +0100
committerDaniel Baumann <daniel@debian.org>2024-11-09 14:26:35 +0100
commit47e4d7c791a050deb06e6c0fdfcac94a782a7cb9 (patch)
tree19edcac0f5dbda32bc329fa68773254fb2c488c3 /docker/ubuntu-ci
parentInitial commit. (diff)
downloadfrr-47e4d7c791a050deb06e6c0fdfcac94a782a7cb9.tar.xz
frr-47e4d7c791a050deb06e6c0fdfcac94a782a7cb9.zip
Adding upstream version 10.1.1.upstream/10.1.1
Signed-off-by: Daniel Baumann <daniel@debian.org>
Diffstat (limited to 'docker/ubuntu-ci')
-rw-r--r--docker/ubuntu-ci/Dockerfile134
-rwxr-xr-xdocker/ubuntu-ci/docker-start5
2 files changed, 139 insertions, 0 deletions
diff --git a/docker/ubuntu-ci/Dockerfile b/docker/ubuntu-ci/Dockerfile
new file mode 100644
index 00000000..5c4649dc
--- /dev/null
+++ b/docker/ubuntu-ci/Dockerfile
@@ -0,0 +1,134 @@
+ARG UBUNTU_VERSION=22.04
+FROM ubuntu:$UBUNTU_VERSION
+
+ARG DEBIAN_FRONTEND=noninteractive
+ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
+
+# Update and install build requirements.
+RUN apt update && apt upgrade -y && \
+ # Basic build requirements from documentation
+ apt-get install -y \
+ autoconf \
+ automake \
+ bison \
+ build-essential \
+ flex \
+ git \
+ install-info \
+ libc-ares-dev \
+ libcap-dev \
+ libelf-dev \
+ libjson-c-dev \
+ libpam0g-dev \
+ libreadline-dev \
+ libsnmp-dev \
+ libsqlite3-dev \
+ lsb-release \
+ libtool \
+ lcov \
+ make \
+ perl \
+ pkg-config \
+ python3-dev \
+ python3-sphinx \
+ screen \
+ texinfo \
+ tmux \
+ && \
+ # Protobuf build requirements
+ apt-get install -y \
+ libprotobuf-c-dev \
+ protobuf-c-compiler \
+ && \
+ # Libyang2 extra build requirements
+ apt-get install -y \
+ cmake \
+ libpcre2-dev \
+ && \
+ # GRPC extra build requirements
+ apt-get install -y \
+ libgrpc-dev \
+ libgrpc++-dev \
+ protobuf-compiler-grpc \
+ && \
+ # Runtime/triage/testing requirements
+ apt-get install -y \
+ curl \
+ gdb \
+ kmod \
+ iproute2 \
+ iputils-ping \
+ liblua5.3-dev \
+ libssl-dev \
+ lua5.3 \
+ net-tools \
+ python3 \
+ python3-pip \
+ snmp \
+ snmp-mibs-downloader \
+ snmpd \
+ sudo \
+ time \
+ tshark \
+ valgrind \
+ yodl \
+ && \
+ download-mibs && \
+ wget https://raw.githubusercontent.com/FRRouting/frr-mibs/main/iana/IANA-IPPM-METRICS-REGISTRY-MIB -O /usr/share/snmp/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB && \
+ wget https://raw.githubusercontent.com/FRRouting/frr-mibs/main/ietf/SNMPv2-PDU -O /usr/share/snmp/mibs/ietf/SNMPv2-PDU && \
+ wget https://raw.githubusercontent.com/FRRouting/frr-mibs/main/ietf/IPATM-IPMC-MIB -O /usr/share/snmp/mibs/ietf/IPATM-IPMC-MIB && \
+ python3 -m pip install wheel && \
+ python3 -m pip install 'protobuf<4' grpcio grpcio-tools && \
+ python3 -m pip install 'pytest>=6.2.4' 'pytest-xdist>=2.3.0' && \
+ python3 -m pip install 'scapy>=2.4.5' && \
+ python3 -m pip install xmltodict && \
+ python3 -m pip install git+https://github.com/Exa-Networks/exabgp@0659057837cd6c6351579e9f0fa47e9fb7de7311
+
+RUN groupadd -r -g 92 frr && \
+ groupadd -r -g 85 frrvty && \
+ adduser --system --ingroup frr --home /home/frr \
+ --gecos "FRR suite" --shell /bin/bash frr && \
+ usermod -a -G frrvty frr && \
+ useradd -d /var/run/exabgp/ -s /bin/false exabgp && \
+ echo 'frr ALL = NOPASSWD: ALL' | tee /etc/sudoers.d/frr && \
+ mkdir -p /home/frr && chown frr.frr /home/frr
+
+# Install FRR built packages
+RUN mkdir -p /etc/apt/keyrings && \
+ curl -s -o /etc/apt/keyrings/frrouting.gpg https://deb.frrouting.org/frr/keys.gpg && \
+ echo deb '[signed-by=/etc/apt/keyrings/frrouting.gpg]' https://deb.frrouting.org/frr \
+ $(lsb_release -s -c) "frr-stable" > /etc/apt/sources.list.d/frr.list && \
+ apt-get update && apt-get install -y librtr-dev libyang2-dev libyang2-tools
+
+USER frr:frr
+
+COPY --chown=frr:frr . /home/frr/frr/
+
+RUN cd ~/frr && \
+ ./bootstrap.sh && \
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --sbindir=/usr/lib/frr \
+ --enable-gcov \
+ --enable-dev-build \
+ --enable-mgmtd-test-be-client \
+ --enable-rpki \
+ --enable-sharpd \
+ --enable-multipath=64 \
+ --enable-user=frr \
+ --enable-group=frr \
+ --enable-config-rollbacks \
+ --enable-grpc \
+ --enable-vty-group=frrvty \
+ --enable-snmp=agentx \
+ --enable-scripting \
+ --with-pkg-extra-version=-my-manual-build && \
+ make -j $(nproc) && \
+ sudo make install
+
+RUN cd ~/frr && make check || true
+
+COPY docker/ubuntu-ci/docker-start /usr/sbin/docker-start
+CMD ["/usr/sbin/docker-start"]
diff --git a/docker/ubuntu-ci/docker-start b/docker/ubuntu-ci/docker-start
new file mode 100755
index 00000000..c383ea8e
--- /dev/null
+++ b/docker/ubuntu-ci/docker-start
@@ -0,0 +1,5 @@
+#!/bin/bash
+if [ $(uname -a | grep -ci Ubuntu) -ge 1 ]; then
+ sudo modprobe mpls-router mpls-iptunnel vrf
+fi
+while true ; do sleep 365d ; done