summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Jenkinsfile81
-rw-r--r--docker/arm64/Dockerfile314
-rw-r--r--docker/armhf/Dockerfile314
3 files changed, 69 insertions, 640 deletions
diff --git a/Jenkinsfile b/Jenkinsfile
index 40729a5..326c03e 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -72,19 +72,76 @@ setDescription()
// Due to long build times on DockerHub we rather build the container by ourself
// and publish it later on.
+
+// create container names on demand
+env.DOCKER_IMAGE = "vyos/vyos-build:" + getGitBranchName()
+env.DOCKER_IMAGE_ARM = "vyos/vyos-build:" + getGitBranchName() + "-armhf"
+env.DOCKER_IMAGE_ARM64 = "vyos/vyos-build:" + getGitBranchName() + "-arm64"
+
node('Docker') {
- stage('Build Container') {
- script {
- git branch: getGitBranchName(),
- url: getGitRepoURL()
-
- // create container name on demand
- env.DOCKER_IMAGE = "vyos/vyos-build:" + getGitBranchName()
- sh "docker build -t ${env.DOCKER_IMAGE} docker"
- withDockerRegistry([credentialsId: "DockerHub"]) {
- sh "docker push ${env.DOCKER_IMAGE}"
+ stage('Fetch') {
+ git branch: getGitBranchName(),
+ url: getGitRepoURL()
+ }
+ stage('Build Docker container') {
+ parallel (
+ 'x86-64': {
+ script {
+ dir('docker') {
+ sh """
+ mkdir -p x86-64
+ cp Dockerfile x86-64/Dockerfile
+ cp entrypoint.sh x86-64/entrypoint.sh
+
+ docker build -t ${env.DOCKER_IMAGE} x86-64
+ """
+ if ( ! isCustomBuild()) {
+ withDockerRegistry([credentialsId: "DockerHub"]) {
+ sh "docker push ${env.DOCKER_IMAGE}"
+ }
+
+ }
+ }
+ }
+ },
+ 'armhf': {
+ script {
+ dir('docker') {
+ sh """
+ cp Dockerfile armhf/Dockerfile
+ cp entrypoint.sh armhf/entrypoint.sh
+ sed -i 's#^FROM.*#FROM multiarch/debian-debootstrap:armhf-buster-slim#' armhf/Dockerfile
+ docker build -t ${env.DOCKER_IMAGE_ARM} armhf
+ """
+ if ( ! isCustomBuild()) {
+ withDockerRegistry([credentialsId: "DockerHub"]) {
+ sh "docker push ${env.DOCKER_IMAGE_ARM}"
+ }
+ }
+ }
+ }
+ },
+ 'arm64': {
+ script {
+ dir('docker') {
+ sh """
+ cp Dockerfile arm64/Dockerfile
+ cp entrypoint.sh arm64/entrypoint.sh
+ sed -i 's#^FROM.*#FROM multiarch/debian-debootstrap:arm64-buster-slim#' arm64/Dockerfile
+ docker build -t ${env.DOCKER_IMAGE_ARM64} arm64
+
+ """
+
+ if ( ! isCustomBuild()) {
+ withDockerRegistry([credentialsId: "DockerHub"]) {
+ sh "docker push ${env.DOCKER_IMAGE_ARM64}"
+
+ }
+ }
+ }
+ }
}
- }
+ )
}
}
@@ -92,7 +149,7 @@ pipeline {
options {
skipDefaultCheckout()
disableConcurrentBuilds()
- timeout(time: 90, unit: 'MINUTES')
+ timeout(time: 120, unit: 'MINUTES')
parallelsAlwaysFailFast()
timestamps()
}
diff --git a/docker/arm64/Dockerfile b/docker/arm64/Dockerfile
deleted file mode 100644
index b45a4f7..0000000
--- a/docker/arm64/Dockerfile
+++ /dev/null
@@ -1,314 +0,0 @@
-# Copyright (C) 2019 VyOS maintainers and contributors
-#
-# This program is free software; you can redistribute it and/or modify
-# in order to easy exprort images built to "external" world
-# it under the terms of the GNU General Public License version 2 or later as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# Must be run with --privileged flag, recommended to run the container with a
-# volume mapped in order to easy export images
-
-FROM multiarch/debian-debootstrap:arm64-buster-slim
-LABEL authors="VyOS Maintainers <maintainers@vyos.io>"
-
-ENV DEBIAN_FRONTEND noninteractive
-
-# Standard shell should be bash not dash
-RUN echo "dash dash/sh boolean false" | debconf-set-selections && \
- dpkg-reconfigure dash
-
-RUN apt-get update && apt-get install -y \
- dialog \
- apt-utils \
- locales
-
-RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen
-ENV LANG en_US.utf8
-
-RUN apt-get update && apt-get install -y \
- vim \
- git \
- curl \
- make \
- sudo \
- mc \
- pbuilder \
- devscripts \
- squashfs-tools \
- autoconf \
- automake \
- dpkg-dev \
- genisoimage \
- lsb-release \
- fakechroot \
- libtool \
- libapt-pkg-dev \
- parted \
- kpartx \
- quilt \
- python3-lxml \
- python3-setuptools \
- python3-nose \
- python3-coverage \
- python3-sphinx \
- python3-pystache \
- python3-git \
- python3-pip \
- pkg-config \
- debhelper \
- gosu \
- live-build \
- jq
-
-# Package needed for mdns-repeater
-RUN apt-get update && apt-get install -y \
- dh-systemd
-
-#
-# Building libvyosconf requires a full configured OPAM/OCaml setup
-#
-RUN apt-get update && apt-get install -y \
- libffi-dev \
- libpcre3-dev
-
-RUN curl https://raw.githubusercontent.com/ocaml/opam/2.0.2/shell/install.sh --output /tmp/opam_install.sh && \
- sed -i 's/read BINDIR/BINDIR=""/' /tmp/opam_install.sh && sh /tmp/opam_install.sh && \
- opam init --root=/opt/opam --comp=4.07.0 --disable-sandboxing
-
-RUN eval $(opam env --root=/opt/opam --set-root) && \
- opam install -y \
- oasis
-
-RUN eval $(opam env --root=/opt/opam --set-root) && opam install -y \
- fileutils \
- lwt \
- lwt_ppx \
- lwt_log \
- ocplib-endian \
- ounit \
- pcre \
- ppx_deriving_yojson \
- sha \
- toml \
- xml-light \
- batteries \
- ocaml-protoc \
- ctypes-foreign \
- menhir
-
-RUN eval $(opam env --root=/opt/opam --set-root) && opam install -y \
- ctypes
-
-# Build VyConf which is required to build libvyosconfig
-RUN eval $(opam env --root=/opt/opam --set-root) && \
- opam pin add vyconf https://github.com/vyos/vyconf.git#51d79a3f -y
-
-# Build libvyosconfig
-RUN eval $(opam env --root=/opt/opam --set-root) && \
- git clone https://github.com/vyos/libvyosconfig.git && \
- cd libvyosconfig && git checkout 9a80a5d3 && \
- dpkg-buildpackage -uc -us -tc -b && \
- dpkg -i ../libvyosconfig0_*.deb
-
-# Packages needed for vyatta-cfg
-RUN apt-get update && apt-get install -y \
- libglib2.0-dev \
- libperl-dev \
- libboost-filesystem-dev
-
-# Packages needed for vyatta-iproute
-RUN apt-get update && apt-get install -y \
- iptables-dev \
- libatm1-dev \
- libcap-dev \
- libdb-dev \
- libelf-dev \
- libselinux1-dev
-
-# Packages needed for vyatta-webgui
-RUN apt-get update && apt-get install -y \
- libexpat1-dev \
- subversion
-
-# Packages needed for pmacct
-RUN apt-get update && apt-get install -y \
- libpcap-dev \
- libpq-dev \
- default-libmysqlclient-dev \
- libgeoip-dev \
- librabbitmq-dev \
- libjansson-dev \
- librdkafka-dev \
- libnetfilter-log-dev
-
-# Pavkages needed for wireguard
-RUN apt-get update && apt-get install -y \
- libmnl-dev
-
-# Packages needed for kernel
-RUN apt-get update && apt-get install -y \
- libncurses5-dev \
- flex \
- bison \
- libelf-dev \
- bc \
- kmod
-
-# Packages needed for vyos-accel-ppp
-RUN apt-get update && apt-get install -y \
- cdbs \
- cmake \
- liblua5.1-dev
-
-# Prerequisites for building rtrlib
-# see http://docs.frrouting.org/projects/dev-guide/en/latest/building-frr-for-debian8.html
-RUN apt-get update && apt-get install -y \
- graphviz \
- doxygen \
- libssh-dev \
- libssl-dev
-
-# Build rtrlib release 0.6.3
-RUN export RTRLIB_VERSION="0.6.3" && \
- wget -P /tmp https://github.com/rtrlib/rtrlib/archive/v${RTRLIB_VERSION}.tar.gz && \
- tar xf /tmp/v${RTRLIB_VERSION}.tar.gz -C /tmp && \
- cd /tmp/rtrlib-${RTRLIB_VERSION} && dpkg-buildpackage -uc -us -tc -b && \
- dpkg -i ../librtr*.deb
-
-# Packages needed to build frr itself
-# https://github.com/FRRouting/frr/blob/master/doc/developer/building-libyang.rst
-# for more info
-RUN apt-get update && apt-get install -y \
- libyang-dev \
- libyang0.16 \
- chrpath \
- install-info \
- libjson-c-dev \
- libpython3-dev \
- python3-dev \
- python3-pytest \
- texinfo
-
-# Packages needed for conntrack-tools
-RUN apt-get update && apt-get install -y \
- libnetfilter-conntrack-dev \
- libnetfilter-cthelper0-dev \
- libnetfilter-cttimeout-dev \
- libnetfilter-queue-dev
-
-# Packages needed for hvinfo
-RUN apt-get update && apt-get install -y \
- gnat \
- gprbuild
-
-# Packages needed for vyos-1x
-RUN apt-get update && apt-get install -y \
- whois
-
-# Packages needed for vyos-xe-guest-utilities
-RUN apt-get update && apt-get install -y \
- golang
-
-# Packages needed for ipaddrcheck
-RUN apt-get update && apt-get install -y \
- libcidr0 \
- libcidr-dev \
- check
-
-# Packages needed for lldpd
-RUN apt-get update && apt-get install -y \
- libbsd-dev \
- libevent-dev
-
-# Packages needed for vyatta-quagga
-RUN apt-get update && apt-get install -y \
- libpam-dev \
- libcap-dev \
- libsnmp-dev \
- gawk
-
-# Packages needed for vyos-strongswan
-RUN apt-get update && apt-get install -y \
- libkrb5-dev \
- libssl-dev \
- libxml2-dev \
- systemd \
- libcurl4-openssl-dev \
- libgcrypt20-dev \
- libgmp3-dev \
- libldap2-dev \
- libsqlite3-dev \
- dh-apparmor \
- gperf \
- libsystemd-dev \
- python3-stdeb \
- python-setuptools
-
-# Packages needed for vyos-opennhrp
-RUN apt-get update && apt-get install -y \
- libc-ares-dev
-
-# Packages needed for ddclient
-RUN apt-get update && apt-get install -y \
- xmlto
-
-# Packages needed for keepalived
-RUN apt-get update && apt-get install -y \
- libnl-3-200 \
- libnl-3-dev \
- libnl-nf-3-200 \
- libnl-nf-3-dev \
- libipset-dev \
- libnl-genl-3-200 \
- libnl-genl-3-dev \
- libpopt-dev
-
-# Packages needed for net-snmp
-RUN apt-get update && apt-get install -y \
- python-all \
- python2.7-dev \
- libmariadb-dev
-
-# Install packer
-RUN export LATEST="$(curl -s https://checkpoint-api.hashicorp.com/v1/check/packer | \
- jq -r -M '.current_version')"; \
- echo "url https://releases.hashicorp.com/packer/"$LATEST"/packer_"$LATEST"_linux_arm64.zip" |\
- curl -K- | gzip -d > /usr/bin/packer && \
- chmod +x /usr/bin/packer
-
-#
-# live-build: building in docker fails with mounting /proc | /sys
-#
-# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919659
-# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=921815
-# https://salsa.debian.org/installer-team/debootstrap/merge_requests/26
-#
-RUN wget https://salsa.debian.org/klausenbusk-guest/debootstrap/commit/a9a603b17cadbf52cb98cde0843dc9f23a08b0da.patch && \
- git clone https://salsa.debian.org/installer-team/debootstrap && \
- cd debootstrap && \
- git checkout 1.0.114 && \
- patch -p1 < ../a9a603b17cadbf52cb98cde0843dc9f23a08b0da.patch && \
- dch -n "Applying fix for docker image compile" && \
- dpkg-buildpackage -us -uc && \
- sudo dpkg -i ../debootstrap*.deb
-
-# Allow password-less 'sudo' for all users in group 'sudo'
-RUN sed "s/^%sudo.*/%sudo\tALL=(ALL) NOPASSWD:ALL/g" -i /etc/sudoers && \
- chmod a+s /usr/sbin/useradd /usr/sbin/groupadd /usr/sbin/gosu /usr/sbin/usermod
-
-# Ensure sure all users have access to our OCAM installation
-RUN echo "$(opam env --root=/opt/opam --set-root)" >> /etc/skel/.bashrc
-
-# Cleanup
-RUN rm -rf /tmp/*
-
-COPY entrypoint.sh /usr/local/bin/entrypoint.sh
-ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
diff --git a/docker/armhf/Dockerfile b/docker/armhf/Dockerfile
deleted file mode 100644
index 1ac51b6..0000000
--- a/docker/armhf/Dockerfile
+++ /dev/null
@@ -1,314 +0,0 @@
-# Copyright (C) 2019 VyOS maintainers and contributors
-#
-# This program is free software; you can redistribute it and/or modify
-# in order to easy exprort images built to "external" world
-# it under the terms of the GNU General Public License version 2 or later as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# Must be run with --privileged flag, recommended to run the container with a
-# volume mapped in order to easy export images
-
-FROM multiarch/debian-debootstrap:armhf-buster-slim
-LABEL authors="VyOS Maintainers <maintainers@vyos.io>"
-
-ENV DEBIAN_FRONTEND noninteractive
-
-# Standard shell should be bash not dash
-RUN echo "dash dash/sh boolean false" | debconf-set-selections && \
- dpkg-reconfigure dash
-
-RUN apt-get update && apt-get install -y \
- dialog \
- apt-utils \
- locales
-
-RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen
-ENV LANG en_US.utf8
-
-RUN apt-get update && apt-get install -y \
- vim \
- git \
- curl \
- make \
- sudo \
- mc \
- pbuilder \
- devscripts \
- squashfs-tools \
- autoconf \
- automake \
- dpkg-dev \
- genisoimage \
- lsb-release \
- fakechroot \
- libtool \
- libapt-pkg-dev \
- parted \
- kpartx \
- quilt \
- python3-lxml \
- python3-setuptools \
- python3-nose \
- python3-coverage \
- python3-sphinx \
- python3-pystache \
- python3-git \
- python3-pip \
- pkg-config \
- debhelper \
- gosu \
- live-build \
- jq
-
-# Package needed for mdns-repeater
-RUN apt-get update && apt-get install -y \
- dh-systemd
-
-#
-# Building libvyosconf requires a full configured OPAM/OCaml setup
-#
-RUN apt-get update && apt-get install -y \
- libffi-dev \
- libpcre3-dev
-
-RUN curl -k https://raw.githubusercontent.com/ocaml/opam/2.0.2/shell/install.sh --output /tmp/opam_install.sh && \
- sed -i 's/read BINDIR/BINDIR=""/' /tmp/opam_install.sh && sh /tmp/opam_install.sh && \
- opam init --root=/opt/opam --comp=4.07.0 --disable-sandboxing
-
-RUN eval $(opam env --root=/opt/opam --set-root) && \
- opam install -y \
- oasis
-
-RUN eval $(opam env --root=/opt/opam --set-root) && opam install -y \
- fileutils \
- lwt \
- lwt_ppx \
- lwt_log \
- ocplib-endian \
- ounit \
- pcre \
- ppx_deriving_yojson \
- sha \
- toml \
- xml-light \
- batteries \
- ocaml-protoc \
- ctypes-foreign \
- menhir
-
-RUN eval $(opam env --root=/opt/opam --set-root) && opam install -y \
- ctypes
-
-# Build VyConf which is required to build libvyosconfig
-RUN eval $(opam env --root=/opt/opam --set-root) && \
- opam pin add vyconf https://github.com/vyos/vyconf.git#51d79a3f -y
-
-# Build libvyosconfig
-RUN eval $(opam env --root=/opt/opam --set-root) && \
- git clone https://github.com/vyos/libvyosconfig.git && \
- cd libvyosconfig && git checkout 9a80a5d3 && \
- dpkg-buildpackage -uc -us -tc -b && \
- dpkg -i ../libvyosconfig0_*.deb
-
-# Packages needed for vyatta-cfg
-RUN apt-get update && apt-get install -y \
- libglib2.0-dev \
- libperl-dev \
- libboost-filesystem-dev
-
-# Packages needed for vyatta-iproute
-RUN apt-get update && apt-get install -y \
- iptables-dev \
- libatm1-dev \
- libcap-dev \
- libdb-dev \
- libelf-dev \
- libselinux1-dev
-
-# Packages needed for vyatta-webgui
-RUN apt-get update && apt-get install -y \
- libexpat1-dev \
- subversion
-
-# Packages needed for pmacct
-RUN apt-get update && apt-get install -y \
- libpcap-dev \
- libpq-dev \
- default-libmysqlclient-dev \
- libgeoip-dev \
- librabbitmq-dev \
- libjansson-dev \
- librdkafka-dev \
- libnetfilter-log-dev
-
-# Pavkages needed for wireguard
-RUN apt-get update && apt-get install -y \
- libmnl-dev
-
-# Packages needed for kernel
-RUN apt-get update && apt-get install -y \
- libncurses5-dev \
- flex \
- bison \
- libelf-dev \
- bc \
- kmod
-
-# Packages needed for vyos-accel-ppp
-RUN apt-get update && apt-get install -y \
- cdbs \
- cmake \
- liblua5.1-dev
-
-# Prerequisites for building rtrlib
-# see http://docs.frrouting.org/projects/dev-guide/en/latest/building-frr-for-debian8.html
-RUN apt-get update && apt-get install -y \
- graphviz \
- doxygen \
- libssh-dev \
- libssl-dev
-
-# Build rtrlib release 0.6.3
-RUN export RTRLIB_VERSION="0.6.3" && \
- wget -P /tmp https://github.com/rtrlib/rtrlib/archive/v${RTRLIB_VERSION}.tar.gz && \
- tar xf /tmp/v${RTRLIB_VERSION}.tar.gz -C /tmp && \
- cd /tmp/rtrlib-${RTRLIB_VERSION} && dpkg-buildpackage -uc -us -tc -b && \
- dpkg -i ../librtr*.deb
-
-# Packages needed to build frr itself
-# https://github.com/FRRouting/frr/blob/master/doc/developer/building-libyang.rst
-# for more info
-RUN apt-get update && apt-get install -y \
- libyang-dev \
- libyang0.16 \
- chrpath \
- install-info \
- libjson-c-dev \
- libpython3-dev \
- python3-dev \
- python3-pytest \
- texinfo
-
-# Packages needed for conntrack-tools
-RUN apt-get update && apt-get install -y \
- libnetfilter-conntrack-dev \
- libnetfilter-cthelper0-dev \
- libnetfilter-cttimeout-dev \
- libnetfilter-queue-dev
-
-# Packages needed for hvinfo
-RUN apt-get update && apt-get install -y \
- gnat \
- gprbuild
-
-# Packages needed for vyos-1x
-RUN apt-get update && apt-get install -y \
- whois
-
-# Packages needed for vyos-xe-guest-utilities
-RUN apt-get update && apt-get install -y \
- golang
-
-# Packages needed for ipaddrcheck
-RUN apt-get update && apt-get install -y \
- libcidr0 \
- libcidr-dev \
- check
-
-# Packages needed for lldpd
-RUN apt-get update && apt-get install -y \
- libbsd-dev \
- libevent-dev
-
-# Packages needed for vyatta-quagga
-RUN apt-get update && apt-get install -y \
- libpam-dev \
- libcap-dev \
- libsnmp-dev \
- gawk
-
-# Packages needed for vyos-strongswan
-RUN apt-get update && apt-get install -y \
- libkrb5-dev \
- libssl-dev \
- libxml2-dev \
- systemd \
- libcurl4-openssl-dev \
- libgcrypt20-dev \
- libgmp3-dev \
- libldap2-dev \
- libsqlite3-dev \
- dh-apparmor \
- gperf \
- libsystemd-dev \
- python3-stdeb \
- python-setuptools
-
-# Packages needed for vyos-opennhrp
-RUN apt-get update && apt-get install -y \
- libc-ares-dev
-
-# Packages needed for ddclient
-RUN apt-get update && apt-get install -y \
- xmlto
-
-# Packages needed for keepalived
-RUN apt-get update && apt-get install -y \
- libnl-3-200 \
- libnl-3-dev \
- libnl-nf-3-200 \
- libnl-nf-3-dev \
- libipset-dev \
- libnl-genl-3-200 \
- libnl-genl-3-dev \
- libpopt-dev
-
-# Packages needed for net-snmp
-RUN apt-get update && apt-get install -y \
- python-all \
- python2.7-dev \
- libmariadb-dev
-
-# Install packer
-RUN export LATEST="$(curl -k -s https://checkpoint-api.hashicorp.com/v1/check/packer | \
- jq -r -M '.current_version')"; \
- echo "url https://releases.hashicorp.com/packer/"$LATEST"/packer_"$LATEST"_linux_arm.zip" |\
- curl -k -K- | gzip -d > /usr/bin/packer && \
- chmod +x /usr/bin/packer
-
-#
-# live-build: building in docker fails with mounting /proc | /sys
-#
-# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919659
-# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=921815
-# https://salsa.debian.org/installer-team/debootstrap/merge_requests/26
-#
-RUN wget https://salsa.debian.org/klausenbusk-guest/debootstrap/commit/a9a603b17cadbf52cb98cde0843dc9f23a08b0da.patch && \
- git clone https://salsa.debian.org/installer-team/debootstrap && \
- cd debootstrap && \
- git checkout 1.0.114 && \
- patch -p1 < ../a9a603b17cadbf52cb98cde0843dc9f23a08b0da.patch && \
- dch -n "Applying fix for docker image compile" && \
- dpkg-buildpackage -us -uc && \
- sudo dpkg -i ../debootstrap*.deb
-
-# Allow password-less 'sudo' for all users in group 'sudo'
-RUN sed "s/^%sudo.*/%sudo\tALL=(ALL) NOPASSWD:ALL/g" -i /etc/sudoers && \
- chmod a+s /usr/sbin/useradd /usr/sbin/groupadd /usr/sbin/gosu /usr/sbin/usermod
-
-# Ensure sure all users have access to our OCAM installation
-RUN echo "$(opam env --root=/opt/opam --set-root)" >> /etc/skel/.bashrc
-
-# Cleanup
-RUN rm -rf /tmp/*
-
-COPY entrypoint.sh /usr/local/bin/entrypoint.sh
-ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]