Run Linux CI on GCC 8 and clang 9

Those are the minimum supported versions. Only PCH builds are performed
to save build time.
This commit is contained in:
Itms
2024-11-25 23:04:45 +01:00
parent 32b26e6d0c
commit 66c2fc07d7
7 changed files with 82 additions and 41 deletions
@@ -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
@@ -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
@@ -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
@@ -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"
-12
View File
@@ -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
+12
View File
@@ -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
+5 -14
View File
@@ -15,7 +15,7 @@
* along with 0 A.D. If not, see <http://www.gnu.org/licenses/>.
*/
// 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) {