diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 00000000..fb36217e --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,15 @@ +pipeline { + agent any + stages { + stage('Build') { + steps { + sh './jenkins/build.sh' + } + } + stage('Test') { + steps { + sh './jenkins/test.sh' + } + } + } +} diff --git a/jenkins/build.sh b/jenkins/build.sh new file mode 100755 index 00000000..bc13c156 --- /dev/null +++ b/jenkins/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -x +set -e +docker build -t openroad/openroad --target base-dependencies . +docker run -u $(id -u ${USER}):$(id -g ${USER}) -v $(pwd):/OpenROAD openroad/openroad bash -c "./OpenROAD/jenkins/install.sh" \ No newline at end of file diff --git a/jenkins/docker/Dockerfile.centos7.gcc-4-9 b/jenkins/docker/Dockerfile.centos7.gcc-4-9 new file mode 100644 index 00000000..72dcb680 --- /dev/null +++ b/jenkins/docker/Dockerfile.centos7.gcc-4-9 @@ -0,0 +1,73 @@ +FROM centos:centos7 AS base-dependencies +LABEL maintainer="Abdelrahman Hosny " + +# Install dev and runtime dependencies +RUN yum group install -y "Development Tools" \ + && yum install -y https://centos7.iuscommunity.org/ius-release.rpm \ + && yum install -y wget git centos-release-scl devtoolset-8 \ + devtoolset-8-libatomic-devel tcl-devel tcl tk libstdc++ tk-devel pcre-devel \ + python36u python36u-libs python36u-devel python36u-pip && \ + yum clean -y all && \ + rm -rf /var/lib/apt/lists/* + + +# Install gcc 4.9 +RUN curl -O https://ftp.gnu.org/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.gz \ + && tar xzf gcc-4.9.2.tar.gz \ + && cd gcc-4.9.2 \ + && ./contrib/download_prerequisites \ + && cd .. \ + && mkdir gcc-build \ + && cd gcc-build \ + && ../gcc-4.9.2/configure \ + --prefix=/usr \ + --enable-shared \ + --enable-threads=posix \ + --enable-__cxa_atexit \ + --enable-clocale=gnu \ + --disable-multilib \ + --enable-languages=all \ + && make -j$(nproc) \ + && make install \ + && cd .. \ + && rm -rf gcc-4.9.2 \ + && rm -rf gcc-4.9.2.tar.gz \ + && rm -rf gcc-build + + +# Install CMake +RUN wget https://cmake.org/files/v3.14/cmake-3.14.0-Linux-x86_64.sh && \ + chmod +x cmake-3.14.0-Linux-x86_64.sh && \ + ./cmake-3.14.0-Linux-x86_64.sh --skip-license --prefix=/usr/local && rm -rf cmake-3.14.0-Linux-x86_64.sh \ + && yum clean -y all + +# Install epel repo +RUN wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && \ + yum install -y epel-release-latest-7.noarch.rpm && rm -rf epel-release-latest-7.noarch.rpm \ + && yum clean -y all + + + +# Install SWIG +RUN yum remove -y swig \ + && wget https://github.com/swig/swig/archive/rel-4.0.1.tar.gz \ + && tar xfz rel-4.0.1.tar.gz \ + && rm -rf rel-4.0.1.tar.gz \ + && cd swig-rel-4.0.1 \ + && ./autogen.sh && ./configure --prefix=/usr && make -j $(nproc) && make install \ + && cd .. \ + && rm -rf swig-rel-4.0.1 + +# Temporarily add boost till all dependent tools are updated.. +RUN yum install -y boost-devel && \ + yum clean -y all && \ + rm -rf /var/lib/apt/lists/* + +FROM base-dependencies AS builder + +COPY . /OpenROAD +WORKDIR /OpenROAD + +# Build +RUN mkdir build +RUN cd build && cmake .. && make -j 4 diff --git a/jenkins/docker/Dockerfile.centos7.gcc-7-3 b/jenkins/docker/Dockerfile.centos7.gcc-7-3 new file mode 100644 index 00000000..15ba1ed5 --- /dev/null +++ b/jenkins/docker/Dockerfile.centos7.gcc-7-3 @@ -0,0 +1,73 @@ +FROM centos:centos7 AS base-dependencies +LABEL maintainer="Abdelrahman Hosny " + +# Install dev and runtime dependencies +RUN yum group install -y "Development Tools" \ + && yum install -y https://centos7.iuscommunity.org/ius-release.rpm \ + && yum install -y wget git centos-release-scl devtoolset-8 \ + devtoolset-8-libatomic-devel tcl-devel tcl tk libstdc++ tk-devel pcre-devel \ + python36u python36u-libs python36u-devel python36u-pip && \ + yum clean -y all && \ + rm -rf /var/lib/apt/lists/* + + +# Install gcc 7.3 +RUN curl -O https://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz \ + && tar xzf gcc-7.3.0.tar.gz \ + && cd gcc-7.3.0 \ + && ./contrib/download_prerequisites \ + && cd .. \ + && mkdir gcc-build \ + && cd gcc-build \ + && ../gcc-7.3.0/configure \ + --prefix=/usr \ + --enable-shared \ + --enable-threads=posix \ + --enable-__cxa_atexit \ + --enable-clocale=gnu \ + --disable-multilib \ + --enable-languages=all \ + && make -j$(nproc) \ + && make install \ + && cd .. \ + && rm -rf gcc-7.3.0 \ + && rm -rf gcc-7.3.0.tar.gz \ + && rm -rf gcc-build + + +# Install CMake +RUN wget https://cmake.org/files/v3.14/cmake-3.14.0-Linux-x86_64.sh && \ + chmod +x cmake-3.14.0-Linux-x86_64.sh && \ + ./cmake-3.14.0-Linux-x86_64.sh --skip-license --prefix=/usr/local && rm -rf cmake-3.14.0-Linux-x86_64.sh \ + && yum clean -y all + +# Install epel repo +RUN wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && \ + yum install -y epel-release-latest-7.noarch.rpm && rm -rf epel-release-latest-7.noarch.rpm \ + && yum clean -y all + + + +# Install SWIG +RUN yum remove -y swig \ + && wget https://github.com/swig/swig/archive/rel-4.0.1.tar.gz \ + && tar xfz rel-4.0.1.tar.gz \ + && rm -rf rel-4.0.1.tar.gz \ + && cd swig-rel-4.0.1 \ + && ./autogen.sh && ./configure --prefix=/usr && make -j $(nproc) && make install \ + && cd .. \ + && rm -rf swig-rel-4.0.1 + +# Temporarily add boost till all dependent tools are updated.. +RUN yum install -y boost-devel && \ + yum clean -y all && \ + rm -rf /var/lib/apt/lists/* + +FROM base-dependencies AS builder + +COPY . /OpenROAD +WORKDIR /OpenROAD + +# Build +RUN mkdir build +RUN cd build && cmake .. && make -j 4 diff --git a/jenkins/install.sh b/jenkins/install.sh new file mode 100755 index 00000000..62c27923 --- /dev/null +++ b/jenkins/install.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -x +set -e +mkdir -p /OpenSTA/build +cd /OpenSTA/build +cmake .. +make -j 4 diff --git a/jenkins/test.sh b/jenkins/test.sh new file mode 100755 index 00000000..a9ac8d1b --- /dev/null +++ b/jenkins/test.sh @@ -0,0 +1 @@ +docker run -u $(id -u ${USER}):$(id -g ${USER}) -v $(pwd):/OpenSTA openroad/openroad bash -c "/OpenSTA/test/regression"