d74a12b5a4
CI / build-image (arm64, ubuntu-latest-arm64) (push) Failing after 19s
CI / build-image (amd64, ubuntu-latest-amd64) (push) Failing after 37s
CI / pre-commit (push) Has been skipped
CI / test (-DCMAKE_BUILD_TYPE=Debug, debug) (push) Has been skipped
CI / test (-DCMAKE_CXX_FLAGS=-DUSE_64_BIT=1, 64-bit-versions) (push) Has been skipped
CI / test (-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++, gcc) (push) Has been skipped
CI / test (-DUSE_SIMD_FALLBACK=ON, simd-fallback) (push) Has been skipped
CI / release (amd64, ubuntu-latest-amd64) (push) Has been skipped
CI / release (arm64, ubuntu-latest-arm64) (push) Has been skipped
CI / coverage (push) Has been skipped
Replace the Jenkinsfile with .gitea/workflows/ci.yml. The CI image is built from the Dockerfile and pushed to the Gitea container registry, rebuilt only when the Dockerfile or pre-commit config changes. The aarch64 release build now runs natively on an arm64 runner instead of cross-compiling, so the cross toolchain and qemu are dropped from the image. Artifacts still go to MinIO (via mc, skipped gracefully if credentials are not configured); ccache uses actions/cache instead of a host volume.
60 lines
1.6 KiB
Docker
60 lines
1.6 KiB
Docker
FROM ubuntu:rolling
|
|
|
|
WORKDIR /tmp
|
|
ENV HOME=/tmp
|
|
RUN chmod -R 777 /tmp
|
|
|
|
# Install apt dependencies
|
|
RUN apt-get update
|
|
RUN apt-get upgrade -y
|
|
RUN TZ=America/Los_Angeles DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
|
build-essential \
|
|
ccache \
|
|
cmake \
|
|
curl \
|
|
devscripts \
|
|
gcovr \
|
|
git \
|
|
gnupg \
|
|
libc6-dbg \
|
|
lsb-release \
|
|
mold \
|
|
ninja-build \
|
|
pre-commit \
|
|
python3-requests \
|
|
rpm \
|
|
software-properties-common \
|
|
texlive-full \
|
|
wget \
|
|
zstd
|
|
|
|
# MinIO client, for uploading build artifacts
|
|
RUN curl -Ls "https://dl.min.io/client/mc/release/linux-$(dpkg --print-architecture)/mc" \
|
|
-o /usr/local/bin/mc && chmod +x /usr/local/bin/mc
|
|
|
|
# Install recent valgrind from source
|
|
RUN curl -Ls https://sourceware.org/pub/valgrind/valgrind-3.22.0.tar.bz2 -o valgrind.tar.bz2 && \
|
|
echo "c811db5add2c5f729944caf47c4e7a65dcaabb9461e472b578765dd7bf6d2d4c valgrind.tar.bz2" > valgrind-sha.txt && \
|
|
sha256sum --quiet -c valgrind-sha.txt && \
|
|
mkdir valgrind && \
|
|
tar --strip-components 1 --no-same-owner --no-same-permissions --directory valgrind -xjf valgrind.tar.bz2 && \
|
|
cd valgrind && \
|
|
./configure --enable-only64bit --enable-lto && \
|
|
make -j`nproc` && \
|
|
make install && \
|
|
cd .. && \
|
|
rm -rf /tmp/*
|
|
|
|
# Recent clang
|
|
RUN wget https://apt.llvm.org/llvm.sh && chmod +x ./llvm.sh && ./llvm.sh 20
|
|
|
|
RUN apt-get -y install clang llvm
|
|
|
|
# Set after building valgrind, which doesn't build with clang for some reason
|
|
ENV CC=clang
|
|
ENV CXX=clang++
|
|
|
|
# Try to have all the pre-commit hooks we'll need already initialized
|
|
COPY .pre-commit-config.yaml /tmp/
|
|
RUN git init && pre-commit install-hooks
|