docker: update docker reference to follow latest docs

Signed-off-by: Christian Hopps <chopps@labn.net>
This commit is contained in:
Christian Hopps 2024-02-19 10:30:13 -05:00
parent cdc964c233
commit 854caad3ea
3 changed files with 31 additions and 21 deletions

View file

@ -23,13 +23,17 @@ RUN apt update && apt upgrade -y && \
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 \
@ -89,18 +93,14 @@ RUN groupadd -r -g 92 frr && \
echo 'frr ALL = NOPASSWD: ALL' | tee /etc/sudoers.d/frr && \
mkdir -p /home/frr && chown frr.frr /home/frr
USER frr: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
# build and install libyang2
RUN cd && pwd && ls -al && \
git clone https://github.com/CESNET/libyang.git && \
cd libyang && \
git checkout v2.1.128 && \
mkdir build; cd build && \
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr \
-DCMAKE_BUILD_TYPE:String="Release" .. && \
make -j $(nproc) && \
sudo make install
USER frr:frr
COPY --chown=frr:frr . /home/frr/frr/
@ -111,6 +111,10 @@ RUN cd ~/frr && \
--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 \

View file

@ -1,8 +1,5 @@
#!/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
sudo modprobe mpls-router mpls-iptunnel vrf
fi
while true ; do sleep 365d ; done

View file

@ -8,10 +8,18 @@ This builds an ubuntu 22.04 container for dev / test
docker build -t frr-ubuntu22:latest -f docker/ubuntu-ci/Dockerfile .
```
# Running Full Topotest
# Run
```
docker run --init -it --privileged --name frr-ubuntu22 -v /lib/modules:/lib/modules frr-ubuntu22:latest bash -c 'cd ~/frr/tests/topotests ; sudo pytest -nauto --dist=loadfile'
docker run -d --init --privileged --name frr-ubuntu22 --mount type=bind,source=/lib/modules,target=/lib/modules frr-ubuntu22:latest
```
# Running full topotest (container stops at end)
```
docker run --init -it --privileged --name frr-ubuntu22 \
-v /lib/modules:/lib/modules frr-ubuntu22:latest \
bash -c 'cd /home/frr/frr/tests/topotests; sudo pytest -nauto --dist=loadfile'
```
# Extract results from the above run into `run-results` dir and analyze
@ -20,10 +28,11 @@ docker run --init -it --privileged --name frr-ubuntu22 -v /lib/modules:/lib/modu
tests/topotests/analyze.py -C frr-ubuntu22 -Ar run-results
```
# Running
# Extract coverage from a stopped container into host FRR source tree
```
docker run -d --init --privileged --name frr-ubuntu22 --mount type=bind,source=/lib/modules,target=/lib/modules frr-ubuntu22:latest
docker export frr-ubuntu22 | tar --strip=3 --wildcards -vx '*.gc??'
lcov -b $(pwd) --capture --directory . --output-file=coverage.info
```
# make check
@ -38,10 +47,10 @@ docker exec frr-ubuntu22 bash -c 'cd ~/frr ; make check'
docker exec -it frr-ubuntu22 bash
```
# topotest -- when Host O/S is Ubuntu only
# Run a specific topotest
```
docker exec frr-ubuntu22 bash -c 'cd ~/frr/tests/topotests/ospf_topo1 ; sudo pytest test_ospf_topo1.py'
docker exec frr-ubuntu22 bash -c 'cd ~/frr/tests/topotests ; sudo pytest ospf_topo1/test_ospf_topo1.py'
```
# stop & remove container