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 \ libreadline-dev \
libsnmp-dev \ libsnmp-dev \
libsqlite3-dev \ libsqlite3-dev \
lsb-release \
libtool \ libtool \
lcov \
make \ make \
perl \ perl \
pkg-config \ pkg-config \
python3-dev \ python3-dev \
python3-sphinx \ python3-sphinx \
screen \
texinfo \ texinfo \
tmux \
&& \ && \
# Protobuf build requirements # Protobuf build requirements
apt-get install -y \ apt-get install -y \
@ -89,18 +93,14 @@ RUN groupadd -r -g 92 frr && \
echo 'frr ALL = NOPASSWD: ALL' | tee /etc/sudoers.d/frr && \ echo 'frr ALL = NOPASSWD: ALL' | tee /etc/sudoers.d/frr && \
mkdir -p /home/frr && chown frr.frr /home/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 USER frr:frr
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
COPY --chown=frr:frr . /home/frr/frr/ COPY --chown=frr:frr . /home/frr/frr/
@ -111,6 +111,10 @@ RUN cd ~/frr && \
--sysconfdir=/etc \ --sysconfdir=/etc \
--localstatedir=/var \ --localstatedir=/var \
--sbindir=/usr/lib/frr \ --sbindir=/usr/lib/frr \
--enable-gcov \
--enable-dev-build \
--enable-mgmtd-test-be-client \
--enable-rpki \
--enable-sharpd \ --enable-sharpd \
--enable-multipath=64 \ --enable-multipath=64 \
--enable-user=frr \ --enable-user=frr \

View File

@ -1,8 +1,5 @@
#!/bin/bash #!/bin/bash
if [ $(uname -a | grep -ci Ubuntu) -ge 1 ]; then if [ $(uname -a | grep -ci Ubuntu) -ge 1 ]; then
#for topotests under ubuntu host sudo modprobe mpls-router mpls-iptunnel vrf
sudo modprobe mpls-router mpls-iptunnel
sudo /etc/init.d/openvswitch-switch start
fi fi
while true ; do sleep 365d ; done 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 . 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 # 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 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 # make check
@ -38,10 +47,10 @@ docker exec frr-ubuntu22 bash -c 'cd ~/frr ; make check'
docker exec -it frr-ubuntu22 bash 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 # stop & remove container