chore: add ubuntu-22.04 CI build

This commit is contained in:
Marcus Holland-Moritz 2024-05-04 15:34:40 +02:00
parent 21901d7c2d
commit dff3d0f591
4 changed files with 101 additions and 27 deletions

View File

@ -0,0 +1,68 @@
# syntax=docker/dockerfile:1
ARG ARCH=amd64
FROM $ARCH/ubuntu:22.04
RUN apt update
RUN apt upgrade -y
RUN apt install -y gnupg wget software-properties-common
RUN wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null
RUN apt-add-repository 'deb https://apt.kitware.com/ubuntu/ jammy main'
RUN apt install -y \
bash-completion \
vim \
less
RUN apt install -y \
gcc-12 \
g++-12 \
clang-15 \
git \
zstd \
ccache \
ninja-build \
cmake \
make \
bison \
flex \
ronn \
fuse3 \
pkg-config \
binutils-dev \
libacl1-dev \
libarchive-dev \
libbenchmark-dev \
libboost-chrono-dev \
libboost-context-dev \
libboost-filesystem-dev \
libboost-iostreams-dev \
libboost-program-options-dev \
libboost-regex-dev \
libboost-system-dev \
libboost-thread-dev \
libbrotli-dev \
libevent-dev \
libhowardhinnant-date-dev \
libjemalloc-dev \
libdouble-conversion-dev \
libiberty-dev \
liblz4-dev \
liblzma-dev \
libmagic-dev \
libssl-dev \
libunwind-dev \
libdwarf-dev \
libelf-dev \
libfmt-dev \
libfuse-dev \
libfuse3-dev \
libgoogle-glog-dev \
libutfcpp-dev \
libflac++-dev \
python3-mistletoe
ARG ARCH
# current ronn version is horribly broken
RUN gem install ronn-ng
RUN useradd -g users -u 1000 -m mhx
ARG SCRIPT=build-linux.sh
COPY $SCRIPT /usr/local/bin/run.sh
RUN chmod +x /usr/local/bin/run.sh
USER mhx
ENTRYPOINT /usr/local/bin/run.sh

View File

@ -1,48 +1,43 @@
IMAGE_UBUNTU="dwarfs-buildenv"
IMAGE_UBUNTU2204="dwarfs-buildenv-ubuntu2204"
IMAGE_FEDORA="dwarfs-buildenv-fedora"
IMAGE_ARCH="dwarfs-buildenv-arch"
ROOT_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
NPROC:=$(shell nproc)
COMMON_RUN_OPTS=-it --rm \
--cap-add SYS_ADMIN --device /dev/fuse --privileged \
--mount type=bind,source="$(ROOT_DIR)"/..,target=/workspace,readonly \
--mount type=bind,source="$(ROOT_DIR)"/../@docker-ccache,target=/ccache \
--mount type=bind,source="$(ROOT_DIR)"/../@docker-home,target=/home/mhx \
--mount type=bind,source="$(ROOT_DIR)"/../@docker-build,target=/home/mhx/build \
--env CCACHE_DIR=/ccache --env CTEST_PARALLEL_LEVEL=$(NPROC) \
--entrypoint /bin/bash
build:
docker build -t $(IMAGE_UBUNTU) .
run:
@docker run $(COMMON_RUN_OPTS) $(IMAGE_UBUNTU)
build_arm:
docker build -f Dockerfile.ubuntu -t $(IMAGE_UBUNTU) --build-arg ARCH=arm64v8 .
run:
@docker run -it --rm \
--cap-add SYS_ADMIN --device /dev/fuse --privileged \
--mount type=bind,source="$(ROOT_DIR)"/..,target=/workspace,readonly \
--mount type=bind,source="$(ROOT_DIR)"/../@docker-ccache,target=/ccache \
--mount type=bind,source="$(ROOT_DIR)"/../@docker-home,target=/home/ubuntu \
--mount type=bind,source="$(ROOT_DIR)"/../@docker-build,target=/home/ubuntu/build \
--env CCACHE_DIR=/ccache --env CTEST_PARALLEL_LEVEL=$(NPROC) \
--entrypoint /bin/bash $(IMAGE_UBUNTU)
build_ubuntu2204:
docker build -f Dockerfile.ubuntu-2204 -t $(IMAGE_UBUNTU2204) .
run_ubuntu2204:
@docker run $(COMMON_RUN_OPTS) $(IMAGE_UBUNTU2204)
build_fedora:
docker build -f Dockerfile.fedora -t $(IMAGE_FEDORA) .
run_fedora:
@docker run -it --rm \
--cap-add SYS_ADMIN --device /dev/fuse --privileged \
--mount type=bind,source="$(ROOT_DIR)"/..,target=/workspace,readonly \
--mount type=bind,source="$(ROOT_DIR)"/../@docker-ccache,target=/ccache \
--mount type=bind,source="$(ROOT_DIR)"/../@docker-home,target=/home/mhx \
--mount type=bind,source="$(ROOT_DIR)"/../@docker-build,target=/home/mhx/build \
--env CCACHE_DIR=/ccache --env CTEST_PARALLEL_LEVEL=$(NPROC) \
--entrypoint /bin/bash $(IMAGE_FEDORA)
@docker run $(COMMON_RUN_OPTS) $(IMAGE_FEDORA)
build_arch:
docker build -f Dockerfile.arch -t $(IMAGE_ARCH) .
run_arch:
@docker run -it --rm \
--cap-add SYS_ADMIN --device /dev/fuse --privileged \
--mount type=bind,source="$(ROOT_DIR)"/..,target=/workspace,readonly \
--mount type=bind,source="$(ROOT_DIR)"/../@docker-ccache,target=/ccache \
--mount type=bind,source="$(ROOT_DIR)"/../@docker-home,target=/home/mhx \
--mount type=bind,source="$(ROOT_DIR)"/../@docker-build,target=/home/mhx/build \
--env CCACHE_DIR=/ccache --env CTEST_PARALLEL_LEVEL=$(NPROC) \
--entrypoint /bin/bash $(IMAGE_ARCH)
@docker run $(COMMON_RUN_OPTS) $(IMAGE_ARCH)

View File

@ -15,8 +15,13 @@ rm -rf build
mkdir build
cd build
GCC_VERSION=14
CLANG_VERSION=18
if [[ "$BUILD_DIST" == "ubuntu-2204" ]]; then
GCC_VERSION=12
CLANG_VERSION=15
else
GCC_VERSION=14
CLANG_VERSION=18
fi
case "-$BUILD_TYPE-" in
*-ninja-*)

View File

@ -276,6 +276,12 @@ jobs:
- arch: arm64v8
dist: ubuntu
build_type: clang-debug-ninja-static
- arch: arm64v8
dist: ubuntu-2204
build_type: gcc-release-ninja
- arch: arm64v8
dist: ubuntu-2204
build_type: clang-release-ninja
runs-on:
- self-hosted