diff --git a/build/jenkins/dockerfiles/bullseye-base.Dockerfile b/build/jenkins/dockerfiles/bullseye-base.Dockerfile new file mode 100644 index 0000000000..c871c264f3 --- /dev/null +++ b/build/jenkins/dockerfiles/bullseye-base.Dockerfile @@ -0,0 +1,52 @@ +FROM debian:bullseye-slim + +RUN useradd -ms /bin/bash --uid 1006 builder + +# 0 A.D. dependencies. +ARG DEBIAN_FRONTEND=noninteractive +ARG DEBCONF_NOWARNINGS="yes" +RUN apt-get -qqy update && apt-get install -qqy --no-install-recommends \ + cmake \ + curl \ + libboost-dev \ + libboost-filesystem-dev \ + libcurl4-gnutls-dev \ + libenet-dev \ + libfmt-dev \ + libfreetype6-dev \ + libgloox-dev \ + libgnutls28-dev \ + libgtk-3-dev \ + libicu-dev \ + libminiupnpc-dev \ + libogg-dev \ + libopenal-dev \ + libpng-dev \ + libsdl2-dev \ + libsodium-dev \ + libvorbis-dev \ + libwxgtk3.0-gtk3-dev \ + libxml2-dev \ + make \ + m4 \ + patch \ + python3-dev \ + python3-pip \ + python-is-python3 \ + subversion \ + xz-utils \ + zlib1g-dev \ + && apt-get clean + +# Install git-lfs +RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash +RUN apt-get -qqy update && apt-get install -qqy --no-install-recommends git-lfs +RUN git lfs install --system --skip-smudge + +# Install rust and Cargo via rustup +USER builder +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain 1.51.0 -y +ENV PATH="${PATH}:/home/builder/.cargo/bin" +USER root + +ENV SHELL=/bin/bash diff --git a/build/jenkins/dockerfiles/buster-base.Dockerfile b/build/jenkins/dockerfiles/buster-base.Dockerfile index 3d9752e946..37ec48633b 100644 --- a/build/jenkins/dockerfiles/buster-base.Dockerfile +++ b/build/jenkins/dockerfiles/buster-base.Dockerfile @@ -18,7 +18,6 @@ RUN apt-get -qqy update && apt-get install -qqy --no-install-recommends \ libgnutls28-dev \ libgtk-3-dev \ libicu-dev \ - libidn11-dev \ libminiupnpc-dev \ libogg-dev \ libopenal-dev \ @@ -48,9 +47,9 @@ RUN git lfs install --system --skip-smudge # Install rust and Cargo via rustup USER builder -RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain 1.51.0 -y ENV PATH="${PATH}:/home/builder/.cargo/bin" USER root -ENV SHELL /bin/bash +ENV SHELL=/bin/bash diff --git a/build/jenkins/dockerfiles/clang8.Dockerfile b/build/jenkins/dockerfiles/clang8.Dockerfile deleted file mode 100644 index c0d4f60a6d..0000000000 --- a/build/jenkins/dockerfiles/clang8.Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM buster-base:latest - -ARG DEBIAN_FRONTEND=noninteractive -ARG DEBCONF_NOWARNINGS="yes" -RUN echo "deb https://deb.debian.org/debian buster-backports main" > /etc/apt/sources.list.d/backports.list -RUN apt-get update && apt-get install -qqy llvm-8 clang-8 lld-8 libclang-8-dev --no-install-recommends - -USER builder - -ENV CC clang-8 -ENV CXX clang++-8 -ENV LDFLAGS -fuse-ld=lld-8 diff --git a/build/jenkins/dockerfiles/clang9.Dockerfile b/build/jenkins/dockerfiles/clang9.Dockerfile new file mode 100644 index 0000000000..09114313ed --- /dev/null +++ b/build/jenkins/dockerfiles/clang9.Dockerfile @@ -0,0 +1,11 @@ +FROM bullseye-base:latest + +ARG DEBIAN_FRONTEND=noninteractive +ARG DEBCONF_NOWARNINGS="yes" +RUN apt-get update && apt-get install -qqy llvm-9 clang-9 lld-9 libclang-9-dev --no-install-recommends + +USER builder + +ENV CC=clang-9 +ENV CXX=clang++-9 +ENV LDFLAGS="-fuse-ld=lld-9" diff --git a/build/jenkins/dockerfiles/gcc7.Dockerfile b/build/jenkins/dockerfiles/gcc7.Dockerfile deleted file mode 100644 index 9308981ade..0000000000 --- a/build/jenkins/dockerfiles/gcc7.Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM buster-base:latest - -ARG DEBIAN_FRONTEND=noninteractive -ARG DEBCONF_NOWARNINGS="yes" -RUN apt-get install -qqy gcc-7 g++-7 llvm-7 libclang-7-dev --no-install-recommends - -USER builder - -ENV LIBCC gcc-7 -ENV LIBCXX g++-7 -ENV CC gcc-7 -ENV CXX g++-7 diff --git a/build/jenkins/dockerfiles/gcc8.Dockerfile b/build/jenkins/dockerfiles/gcc8.Dockerfile new file mode 100644 index 0000000000..c296a965f4 --- /dev/null +++ b/build/jenkins/dockerfiles/gcc8.Dockerfile @@ -0,0 +1,12 @@ +FROM buster-base:latest + +ARG DEBIAN_FRONTEND=noninteractive +ARG DEBCONF_NOWARNINGS="yes" +RUN apt-get install -qqy gcc-8 g++-8 --no-install-recommends + +USER builder + +ENV LIBCC=gcc-8 +ENV LIBCXX=g++-8 +ENV CC=gcc-8 +ENV CXX=g++-8 diff --git a/build/jenkins/pipelines/linux.Jenkinsfile b/build/jenkins/pipelines/linux.Jenkinsfile index d655653769..a0a537158a 100644 --- a/build/jenkins/pipelines/linux.Jenkinsfile +++ b/build/jenkins/pipelines/linux.Jenkinsfile @@ -15,7 +15,7 @@ * along with 0 A.D. If not, see . */ -// This pipeline builds the game on Linux (with min and max supported versions of GCC and clang) and runs tests. +// This pipeline builds the game on Linux (with minimum supported versions of GCC and clang) and runs tests. pipeline { // Stop previous build in pull requests, but not in branches @@ -37,6 +37,7 @@ pipeline { steps { discoverGitReferenceBuild() sh "cd build/jenkins/dockerfiles/ && docker build -t buster-base -f buster-base.Dockerfile ." + sh "cd build/jenkins/dockerfiles/ && docker build -t bullseye-base -f bullseye-base.Dockerfile ." } } stage("Linux Build") { @@ -46,18 +47,14 @@ pipeline { axes { axis { name 'JENKINS_COMPILER' - values 'gcc7' //, 'gcc14', 'clang8', 'clang18' - } - axis { - name 'JENKINS_PCH' - values 'pch' //, 'no-pch' + values 'gcc8', 'clang9' } } agent { dockerfile { label 'LinuxAgent' - customWorkspace "workspace/${JENKINS_COMPILER}-${JENKINS_PCH}" + customWorkspace "workspace/${JENKINS_COMPILER}-pch" dir 'build/jenkins/dockerfiles' filename "${JENKINS_COMPILER}.Dockerfile" } @@ -71,13 +68,7 @@ pipeline { sh "libraries/build-source-libs.sh 2> ${JENKINS_COMPILER}-prebuild-errors.log" - script { - if (env.JENKINS_PCH == "no-pch") { - sh "build/workspaces/update-workspaces.sh --jenkins-tests --without-pch 2>> ${JENKINS_COMPILER}-prebuild-errors.log" - } else { - sh "build/workspaces/update-workspaces.sh --jenkins-tests 2>> ${JENKINS_COMPILER}-prebuild-errors.log" - } - } + sh "build/workspaces/update-workspaces.sh --jenkins-tests 2>> ${JENKINS_COMPILER}-prebuild-errors.log" script { if (params.CLEANBUILD) {