]> git.proxmox.com Git - mirror_frr.git/commitdiff
ubuntu20-ci: create a docker 20.04 container for dev / test / ci
authorLou Berger <lberger@labn.net>
Sun, 28 Mar 2021 11:44:16 +0000 (07:44 -0400)
committerLou Berger <lberger@labn.net>
Mon, 12 Apr 2021 20:56:38 +0000 (16:56 -0400)
Signed-off-by: Lou Berger <lberger@labn.net>
docker/ubuntu20-ci/Dockerfile [new file with mode: 0644]
docker/ubuntu20-ci/README.md [new file with mode: 0644]
docker/ubuntu20-ci/docker-start [new file with mode: 0755]

diff --git a/docker/ubuntu20-ci/Dockerfile b/docker/ubuntu20-ci/Dockerfile
new file mode 100644 (file)
index 0000000..5665778
--- /dev/null
@@ -0,0 +1,74 @@
+FROM ubuntu:20.04
+
+ARG DEBIAN_FRONTEND=noninteractive
+ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
+# Update Ubuntu Software repository
+RUN apt update && \
+    apt-get install -y \
+      git autoconf automake libtool make libreadline-dev texinfo \
+      pkg-config libpam0g-dev libjson-c-dev bison flex python3-pytest \
+      libc-ares-dev python3-dev libsystemd-dev python-ipaddress python3-sphinx \
+      install-info build-essential libsystemd-dev libsnmp-dev perl \
+      libcap-dev python2 libelf-dev \
+      sudo gdb curl iputils-ping time \
+      mininet iproute2 iperf && \
+      curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output /tmp/get-pip.py && \
+      python2 /tmp/get-pip.py && \
+      rm -f  /tmp/get-pip.py && \
+      pip2 install ipaddr && \
+      pip2 install "pytest<5" && \
+      pip2 install "scapy>=2.4.2" && \
+      pip2 install exabgp==3.4.17
+
+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
+
+#for libyang 1
+RUN apt-get install -y cmake libpcre3-dev
+
+USER frr:frr
+
+# build and install libyang1
+RUN cd && pwd && ls -al && \
+    git clone https://github.com/CESNET/libyang.git && \
+    cd libyang && \
+    git checkout v1.0.225 && \
+    mkdir build; cd build && \
+    cmake -DENABLE_LYD_PRIV=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+          -D CMAKE_BUILD_TYPE:String="Release" .. && \
+    make -j $(nproc) && \
+    sudo make install
+
+COPY --chown=frr:frr . /home/frr/frr/
+
+RUN cd && ls -al && ls -al frr
+
+RUN cd ~/frr && \
+    ./bootstrap.sh  && \
+    ./configure \
+       --prefix=/usr \
+       --localstatedir=/var/run/frr \
+       --sbindir=/usr/lib/frr \
+       --sysconfdir=/etc/frr \
+       --enable-vtysh \
+       --enable-pimd \
+       --enable-sharpd \
+       --enable-multipath=64 \
+       --enable-user=frr \
+       --enable-group=frr \
+       --enable-vty-group=frrvty \
+       --enable-snmp=agentx \
+       --with-pkg-extra-version=-my-manual-build && \
+    make -j $(nproc) && \
+    sudo make install
+
+RUN cd ~/frr && make check || true
+
+COPY docker/ubuntu20-ci/docker-start /usr/sbin/docker-start
+ENTRYPOINT ["/usr/sbin/docker-start"]
diff --git a/docker/ubuntu20-ci/README.md b/docker/ubuntu20-ci/README.md
new file mode 100644 (file)
index 0000000..11138c6
--- /dev/null
@@ -0,0 +1,45 @@
+# Ubuntu 20.04
+
+This builds an ubuntu 20.04 container for dev / test
+
+# Build
+
+```
+docker build -t frr-ubuntu20:latest  -f docker/ubuntu20-ci/Dockerfile .
+```
+
+# Running
+
+```
+docker run -d --privileged --name frr-ubuntu20 --mount type=bind,source=/lib/modules,target=/lib/modules frr-ubuntu20:latest
+```
+
+# make check
+
+```
+docker exec frr-ubuntu20 bash -c 'cd ~/frr ; make check'
+```
+
+# interactive bash
+
+```
+docker exec -it frr-ubuntu20 bash
+```
+
+# topotest -- when Host O/S is Ubuntu only
+
+```
+docker exec frr-ubuntu20 bash -c 'cd ~/frr/tests/topotests/ospf-topo1 ; sudo pytest test_ospf_topo1.py'
+```
+
+# stop & remove container
+
+```
+docker stop frr-ubuntu20 ; docker rm frr-ubuntu18
+```
+
+# remove image
+
+```
+docker rmi frr-ubuntu20:latest
+```
diff --git a/docker/ubuntu20-ci/docker-start b/docker/ubuntu20-ci/docker-start
new file mode 100755 (executable)
index 0000000..9a45c72
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+if [ $(uname -a | grep -ci Ubuntu) -ge 1 ]; then
+    #for topotests under ubuntu host
+    sudo modprobe mpls-router mpls-iptunnel
+    sudo /etc/init.d/openvswitch-switch start
+fi
+while true ; do sleep 365d ; done