Skip to content

Commit

Permalink
ubuntu20-ci: create a docker 20.04 container for dev / test / ci
Browse files Browse the repository at this point in the history
Signed-off-by: Lou Berger <lberger@labn.net>
  • Loading branch information
louberger committed Apr 12, 2021
1 parent cd18e08 commit 60bad45
Show file tree
Hide file tree
Showing 3 changed files with 127 additions and 0 deletions.
74 changes: 74 additions & 0 deletions docker/ubuntu20-ci/Dockerfile
@@ -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"]
45 changes: 45 additions & 0 deletions docker/ubuntu20-ci/README.md
@@ -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
```
8 changes: 8 additions & 0 deletions docker/ubuntu20-ci/docker-start
@@ -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

0 comments on commit 60bad45

Please sign in to comment.