docker: Create build for CentOS 8

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
This commit is contained in:
Donatas Abraitis 2019-12-27 14:08:31 +02:00
parent 7655aa34c9
commit 3deaafbd9b
6 changed files with 99 additions and 13 deletions

View File

@ -1,5 +1,5 @@
# This stage builds an rpm from the source
FROM centos:centos7 as centos-builder
FROM centos:centos7 as centos-7-builder
RUN yum install -y rpm-build autoconf automake libtool make \
readline-devel texinfo net-snmp-devel groff pkgconfig \
@ -35,9 +35,9 @@ RUN mkdir -p /pkgs/rpm \
&& yum install -y https://ci1.netdef.org/artifact/LIBYANG-YANGRELEASE/shared/build-10/CentOS-7-x86_64-Packages/libyang-0.16.111-0.x86_64.rpm \
https://ci1.netdef.org/artifact/RPKI-RTRLIB/shared/build-110/CentOS-7-x86_64-Packages/librtr-0.7.0-1.el7.centos.x86_64.rpm
COPY --from=centos-builder /rpmbuild/RPMS/ /pkgs/rpm/
COPY --from=centos-7-builder /rpmbuild/RPMS/ /pkgs/rpm/
RUN yum install -y /pkgs/rpm/*/*.rpm \
&& rm -rf /pkgs
COPY docker/centos/docker-start /usr/lib/frr/docker-start
COPY docker/centos-7/docker-start /usr/lib/frr/docker-start
ENTRYPOINT [ "/usr/lib/frr/docker-start" ]

View File

@ -8,24 +8,24 @@ set -e
GITREV="$(git rev-parse --short=10 HEAD)"
PKGVER="$(printf '%u\n' 0x$GITREV)"
mkdir -p docker/centos/pkgs
mkdir -p docker/centos-7/pkgs
docker build \
--file=docker/centos/Dockerfile \
--file=docker/centos-7/Dockerfile \
--build-arg="PKGVER=$PKGVER" \
--tag="frr:centos-builder-$GITREV" \
--target=centos-builder \
--tag="frr:centos-7-builder-$GITREV" \
--target=centos-7-builder \
.
# Copy RPM package from container to host
CONTAINER_ID="$(docker create "frr:centos-builder-$GITREV")"
docker cp "${CONTAINER_ID}:/rpmbuild/RPMS/x86_64/" docker/centos/pkgs
CONTAINER_ID="$(docker create "frr:centos-7-builder-$GITREV")"
docker cp "${CONTAINER_ID}:/rpmbuild/RPMS/x86_64/" docker/centos-7/pkgs
docker rm "${CONTAINER_ID}"
docker build \
--cache-from="frr:centos-builder-$GITREV" \
--file=docker/centos/Dockerfile \
--cache-from="frr:centos-7-builder-$GITREV" \
--file=docker/centos-7/Dockerfile \
--build-arg="PKGVER=$PKGVER" \
--tag="frr:centos-$GITREV" \
--tag="frr:centos-7-$GITREV" \
.
docker rmi "frr:centos-builder-$GITREV"
docker rmi "frr:centos-7-builder-$GITREV"

View File

@ -0,0 +1,46 @@
# This stage builds an rpm from the source
FROM centos:centos8 as centos-8-builder
RUN dnf install --enablerepo=PowerTools -y rpm-build git autoconf pcre-devel \
automake libtool make readline-devel texinfo net-snmp-devel pkgconfig \
groff pkgconfig json-c-devel pam-devel bison flex python2-pytest \
c-ares-devel python2-devel systemd-devel libcap-devel platform-python-devel \
https://ci1.netdef.org/artifact/LIBYANG-YANGRELEASE/shared/build-10/CentOS-7-x86_64-Packages/libyang-0.16.111-0.x86_64.rpm \
https://ci1.netdef.org/artifact/LIBYANG-YANGRELEASE/shared/build-10/CentOS-7-x86_64-Packages/libyang-devel-0.16.111-0.x86_64.rpm \
https://ci1.netdef.org/artifact/RPKI-RTRLIB/shared/build-110/CentOS-7-x86_64-Packages/librtr-0.7.0-1.el7.centos.x86_64.rpm \
https://ci1.netdef.org/artifact/RPKI-RTRLIB/shared/build-110/CentOS-7-x86_64-Packages/librtr-devel-0.7.0-1.el7.centos.x86_64.rpm
RUN pip2 install sphinx
COPY . /src
ARG PKGVER
RUN echo '%_smp_mflags %( echo "-j$(/usr/bin/getconf _NPROCESSORS_ONLN)"; )' >> /root/.rpmmacros \
&& cd /src \
&& ./bootstrap.sh \
&& ./configure \
--enable-rpki \
--enable-numeric-version \
--with-pkg-extra-version="_git$PKGVER" \
&& make dist \
&& cd / \
&& mkdir -p /rpmbuild/{SOURCES,SPECS} \
&& cp /src/frr*.tar.gz /rpmbuild/SOURCES \
&& cp /src/redhat/frr.spec /rpmbuild/SPECS \
&& rpmbuild \
--define "_topdir /rpmbuild" \
-ba /rpmbuild/SPECS/frr.spec
# This stage installs frr from the rpm
FROM centos:centos8
RUN mkdir -p /pkgs/rpm \
&& yum install -y https://ci1.netdef.org/artifact/LIBYANG-YANGRELEASE/shared/build-10/CentOS-7-x86_64-Packages/libyang-0.16.111-0.x86_64.rpm \
https://ci1.netdef.org/artifact/RPKI-RTRLIB/shared/build-110/CentOS-7-x86_64-Packages/librtr-0.7.0-1.el7.centos.x86_64.rpm
COPY --from=centos-8-builder /rpmbuild/RPMS/ /pkgs/rpm/
RUN yum install -y /pkgs/rpm/*/*.rpm \
&& rm -rf /pkgs
COPY docker/centos-8/docker-start /usr/lib/frr/docker-start
ENTRYPOINT [ "/usr/lib/frr/docker-start" ]

31
docker/centos-8/build.sh Executable file
View File

@ -0,0 +1,31 @@
#!/bin/sh
set -e
##
# Package version needs to be decimal
##
GITREV="$(git rev-parse --short=10 HEAD)"
PKGVER="$(printf '%u\n' 0x$GITREV)"
mkdir -p docker/centos-8/pkgs
docker build \
--file=docker/centos-8/Dockerfile \
--build-arg="PKGVER=$PKGVER" \
--tag="frr:centos-8-builder-$GITREV" \
--target=centos-8-builder \
.
# Copy RPM package from container to host
CONTAINER_ID="$(docker create "frr:centos-builder-8-$GITREV")"
docker cp "${CONTAINER_ID}:/rpmbuild/RPMS/x86_64/" docker/centos-8/pkgs
docker rm "${CONTAINER_ID}"
docker build \
--cache-from="frr:centos-8-builder-$GITREV" \
--file=docker/centos-8/Dockerfile \
--build-arg="PKGVER=$PKGVER" \
--tag="frr:centos-8-$GITREV" \
.
docker rmi "frr:centos-8-builder-$GITREV"

9
docker/centos-8/docker-start Executable file
View File

@ -0,0 +1,9 @@
#!/bin/sh
set -e
chown -R frr:frr /etc/frr
/usr/lib/frr/frrinit.sh start
# Sleep forever
exec tail -f /dev/null