From: Matt Rose Date: Wed, 19 Jul 2017 13:59:06 +0000 (-0400) Subject: add dockerfiles for building freeradius with docker X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ca4af429bbf7db8ac8c32f96b49dd7c6fda74ce8;p=thirdparty%2Ffreeradius-server.git add dockerfiles for building freeradius with docker --- diff --git a/scripts/docker/build-centos6/Dockerfile b/scripts/docker/build-centos6/Dockerfile new file mode 100644 index 00000000000..c4625b6382b --- /dev/null +++ b/scripts/docker/build-centos6/Dockerfile @@ -0,0 +1,94 @@ +FROM centos:centos6 + +# +# Install devtools like Make and git +# +RUN yum groupinstall -y "Development Tools" +RUN yum install -y rpmdevtools +RUN yum install -y vim emacs nano +RUN yum install -y yum-utils + +# +# Add the EPEL repository for freetds and hiredis +# +RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm + +# +# Install GCC-4.9 as it has the requisite support for C11 keywords and atomics +# +RUN yum install -y centos-release-scl +RUN yum install -y devtoolset-3-gcc devtoolset-3-gcc-c++ +ENV CC=/opt/rh/devtoolset-3/root/usr/bin/gcc + +# +# Setup a src dir in /usr/local +# +RUN mkdir -p /usr/local/src/repositories +WORKDIR /usr/local/src + +# +# Get a modern version of cmake. We need 3.8.2 or later to build libkqueue rpms +# +RUN yum install -y openssl + +RUN curl https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.sh > ./cmake.sh + +RUN [ "$(cat ./cmake.sh | openssl sha256 | sed 's/^.* //')" = "bb26b1871f9e5c2fb73476186cc94d03b674608f704b48b94d617340b87b4d73" ] +RUN chmod +x ./cmake.sh +RUN ./cmake.sh --skip-license --prefix=/usr/local + +# +# Grab libkqueue and build +# +WORKDIR /usr/local/src/repositories +RUN git clone --depth=1 https://github.com/arr2036/libkqueue.git +WORKDIR libkqueue + +# Fixme: Change to the main repo when they merge this branch +RUN git checkout patch-3 +RUN cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib ./ && \ + make && \ + cpack -G RPM +RUN yum localinstall -y ./*.rpm + + +WORKDIR /usr/local/src/repositories +RUN git clone --depth=1 https://github.com/mattrose/hiredis.git +WORKDIR hiredis +RUN git checkout rpm +WORKDIR /usr/local/src/repositories +RUN mkdir -p $HOME/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} +RUN yum-builddep -y hiredis/redhat/hiredis.spec +RUN v=$(rpm -q --qf '%{VERSION}\n' --specfile hiredis/redhat/hiredis.spec | head -1) ;\ + mv hiredis hiredis-$v ;\ + tar -c -z -f $HOME/rpmbuild/SOURCES/hiredis-$v.tar.gz --exclude=.git hiredis-$v ;\ + rpmbuild -bb hiredis-$v/redhat/hiredis.spec +RUN yum localinstall -y $HOME/rpmbuild/RPMS/*/hiredis-*.rpm + +# +# Shallow clone the FreeRADIUS source +# +WORKDIR /usr/local/src/repositories +RUN git clone --depth=1 https://github.com/mattrose/freeradius-server.git + +WORKDIR freeradius-server + +# Install build dependencies for all branches +RUN for i in $(git for-each-ref --format='%(refname:short)' refs/remotes/origin 2>/dev/null | sed -e 's#origin/##' | egrep "^v[0-9]*\.[0-9x]*\.x$");\ + do \ + git checkout $i; \ + [ -e ./redhat/freeradius.spec ] && yum-builddep -y ./redhat/freeradius.spec; \ + done + +# Create the build tree +ENV BUILDDIR=/root/rpmbuild +RUN rpmdev-setuptree +### This is necessary for the jenkins server to talk to the docker instance +RUN yum install -y openssh-server java-1.8.0-openjdk-headless createrepo +RUN adduser jenkins +RUN echo -e "jenkins1" | passwd --stdin jenkins +RUN mkdir /var/run/sshd +RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' +RUN sed -i 's|session required pam_loginuid.so|session optional pam_loginuid.so|g' /etc/pam.d/sshd +EXPOSE 22 +CMD ["/usr/sbin/sshd","-D"] diff --git a/scripts/docker/build-centos7/Dockerfile b/scripts/docker/build-centos7/Dockerfile new file mode 100644 index 00000000000..ee8d0204f02 --- /dev/null +++ b/scripts/docker/build-centos7/Dockerfile @@ -0,0 +1,78 @@ +FROM centos:centos7 + +# +# Install devtools like Make and git +# +RUN yum groupinstall -y "Development Tools" +RUN yum install -y rpmdevtools +RUN yum install -y vim emacs nano + +# +# Add the EPEL repository for freetds and hiredis +# +RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm + +# +# Install GCC-4.9 as it has the requisite support for C11 keywords and atomics +# +RUN yum install -y centos-release-scl +RUN yum install -y devtoolset-3-gcc devtoolset-3-gcc-c++ +ENV CC=/opt/rh/devtoolset-3/root/usr/bin/gcc + +# +# Setup a src dir in /usr/local +# +RUN mkdir -p /usr/local/src/repositories +WORKDIR /usr/local/src + +# +# Get a modern version of cmake. We need 3.8.2 or later to build libkqueue rpms +# +RUN yum install -y openssl + +RUN curl https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.sh > ./cmake.sh + +RUN [ "$(cat ./cmake.sh | openssl sha256 | sed 's/^.* //')" = "bb26b1871f9e5c2fb73476186cc94d03b674608f704b48b94d617340b87b4d73" ] +RUN chmod +x ./cmake.sh +RUN ./cmake.sh --skip-license --prefix=/usr/local + +# +# Grab libkqueue and build +# +WORKDIR /usr/local/src/repositories +RUN git clone --depth=1 --no-single-branch https://github.com/arr2036/libkqueue.git +WORKDIR libkqueue + +# Fixme: Change to the main repo when they merge this branch +RUN git checkout patch-3 +RUN cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib ./ && \ + make && \ + cpack -G RPM +RUN yum localinstall -y ./*.rpm + +# +# Shallow clone the FreeRADIUS source +# +WORKDIR /usr/local/src/repositories +RUN git clone --depth 1 --no-single-branch https://github.com/FreeRADIUS/freeradius-server.git +WORKDIR freeradius-server + +# Install build dependencies for all branches +RUN for i in $(git for-each-ref --format='%(refname:short)' refs/remotes/origin 2>/dev/null | sed -e 's#origin/##' | egrep "^v[0-9]*\.[0-9x]*\.x$");\ + do \ + git checkout $i; \ + [ -e ./redhat/freeradius.spec ] && yum-builddep -y ./redhat/freeradius.spec; \ + done + +# Create the build tree +ENV BUILDDIR=/root/rpmbuild +RUN rpmdev-setuptree +### This is necessary for the jenkins server to talk to the docker instance +RUN yum install -y openssh-server java-1.8.0-openjdk-headless createrepo +RUN adduser jenkins +RUN echo -e "jenkins1" | passwd --stdin jenkins +RUN mkdir /var/run/sshd +RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' +RUN sed -i 's|session required pam_loginuid.so|session optional pam_loginuid.so|g' /etc/pam.d/sshd +EXPOSE 22 +CMD ["/usr/sbin/sshd","-D"] diff --git a/scripts/docker/build-debian/Dockerfile b/scripts/docker/build-debian/Dockerfile new file mode 100644 index 00000000000..2b8b743a20c --- /dev/null +++ b/scripts/docker/build-debian/Dockerfile @@ -0,0 +1,30 @@ +FROM debian:jessie +RUN apt-get update && apt-get install -y devscripts equivs git quilt +RUN apt-get install -y g++-4.9 +RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 50 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9 && update-alternatives --config gcc +WORKDIR /usr/local/src/repositories +RUN git clone --depth=1 https://github.com/mattrose/freeradius-server.git + +WORKDIR freeradius-server + +# Install build dependencies for all branches +RUN for i in $(git for-each-ref --format='%(refname:short)' refs/remotes/origin 2>/dev/null | sed -e 's#origin/##' | egrep "^v[0-9]*\.[0-9x]*\.x$");\ + do \ + git checkout $i; \ + [ -e ./debian/control.in ] && debian/rules debian/control && echo 'y' | mk-build-deps -irt'apt-get -yV' debian/control; \ + done + +### For some reason this dep was not installed +# RUN apt-get install -y libiodbc2-dev +### This is necessary for the jenkins server to talk to the docker instance +RUN echo deb http://ftp.debian.org/debian jessie-backports main >> /etc/apt/sources.list +RUN apt-get update && apt-get -t jessie-backports install -y openjdk-8-jre-headless +RUN apt-get install -y openssh-server sudo +RUN useradd -m jenkins +RUN echo "jenkins:jenkins1" | chpasswd +RUN echo "jenkins ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers +RUN mkdir /var/run/sshd +# RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' +RUN sed -i 's|session required pam_loginuid.so|session optional pam_loginuid.so|g' /etc/pam.d/sshd +EXPOSE 22 +CMD ["/usr/sbin/sshd","-D"] diff --git a/scripts/docker/build-debian7/Dockerfile b/scripts/docker/build-debian7/Dockerfile new file mode 100644 index 00000000000..9066f306dd0 --- /dev/null +++ b/scripts/docker/build-debian7/Dockerfile @@ -0,0 +1,22 @@ +FROM debian:wheezy +RUN apt-get update && apt-get install -y sudo firebird-dev freetds-dev libcap-dev libcollectdclient-dev libcurl4-openssl-dev libgdbm-dev libhiredis-dev libidn11-dev libiodbc2-dev libjson0-dev libldap2-dev libpq-dev libmemcached-dev libmysqlclient-dev libpam0g-dev libpcap-dev libperl-dev libsqlite3-dev libunbound-dev libtalloc-dev libwbclient-dev libykclient-dev libyubikey-dev python-dev ruby ruby-dev snmp software-properties-common python-software-properties libssl-dev libtalloc-dev libkqueue-dev make packaging-dev libkrb5-dev libreadline-dev samba4-dev openssh-server mercurial + +RUN hg clone http://hg.openjdk.java.net/jdk8/jdk8 YourOpenJDK ;\ + cd YourOpenJDK ;\ + bash ./get_source.sh +RUN apt-get install -y cpio zip openjdk-7-jdk libX11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev cups libcups2-dev +RUN apt-get install -y libfreetype6-dev libasound2-dev +ENV DISABLE_HOTSPOT_OS_VERSION_CHECK=ok +RUN cd YourOpenJDK && bash ./configure && make +RUN cd YourOpenJDK && make install +RUN echo "deb http://http.debian.net/debian wheezy-backports main" >> /etc/apt/sources.list +RUN apt-get update && apt-get install -y gcc-4.9 g++-4.9 +#RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 50 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9 && update-alternatives --config gcc +RUN apt-get install -y sudo && echo "jenkins ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers +RUN useradd -m jenkins +RUN echo "jenkins:jenkins1" | chpasswd +RUN mkdir /var/run/sshd +# RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' +RUN sed -i 's|session required pam_loginuid.so|session optional pam_loginuid.so|g' /etc/pam.d/sshd +EXPOSE 22 +CMD ["/usr/sbin/sshd","-D"] diff --git a/scripts/docker/build-ubuntu14/Dockerfile b/scripts/docker/build-ubuntu14/Dockerfile new file mode 100644 index 00000000000..1efef92f31e --- /dev/null +++ b/scripts/docker/build-ubuntu14/Dockerfile @@ -0,0 +1,33 @@ +FROM ubuntu:14.04 +RUN apt-get update && apt-get install -y devscripts equivs git quilt +RUN apt-get install -y software-properties-common python-software-properties +RUN add-apt-repository ppa:ubuntu-toolchain-r/test +RUN apt-get update +RUN apt-get install -y g++-4.9 +RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 50 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9 && update-alternatives --config gcc +WORKDIR /usr/local/src/repositories +RUN git clone --depth=1 --no-single-branch https://github.com/mattrose/freeradius-server.git + +WORKDIR freeradius-server +# RUN if [ -e ./debian/control.in ] ; then debian/rules debian/control ; fi ; echo 'y' | mk-build-deps -irt'apt-get -yV' debian/control +# Install build dependencies for all branches +RUN for i in $(git for-each-ref --format='%(refname:short)' refs/remotes/origin 2>/dev/null | sed -e 's#origin/##' | egrep "^v[0-9]*\.[0-9x]*\.x$");\ + do \ + git checkout $i; \ + if [ -e ./debian/control.in ] ; then debian/rules debian/control ; fi ; echo 'y' | mk-build-deps -irt'apt-get -yV' debian/control ; \ + done + +### For some reason this dep was not installed +### This is necessary for the jenkins server to talk to the docker instance +#RUN echo deb http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse >> /etc/apt/sources.list +RUN apt-add-repository ppa:openjdk-r/ppa +RUN apt-get update && apt-get install -y openjdk-8-jre-headless +RUN apt-get install -y openssh-server +RUN useradd -m jenkins +RUN echo "jenkins:jenkins1" | chpasswd +RUN echo "jenkins ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers +RUN mkdir /var/run/sshd +# RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' +RUN sed -i 's|session required pam_loginuid.so|session optional pam_loginuid.so|g' /etc/pam.d/sshd +EXPOSE 22 +CMD ["/usr/sbin/sshd","-D"]