From a0051c6654fab4e3c36cc0e4e9623b26d5043503 Mon Sep 17 00:00:00 2001 From: Kirill Gavrilov Date: Sun, 19 Oct 2025 15:17:28 +0300 Subject: [PATCH] build: adjust CI Dockerfile to make it possible to run on Apple Silicon Mac --- docker/ci-runner.Dockerfile | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/docker/ci-runner.Dockerfile b/docker/ci-runner.Dockerfile index ba2d257..bd01345 100644 --- a/docker/ci-runner.Dockerfile +++ b/docker/ci-runner.Dockerfile @@ -1,6 +1,7 @@ ARG NODEJS_VERSION=22 ARG DEBIAN_VERSION=trixie ARG BASE_IMAGE=node:${NODEJS_VERSION}-${DEBIAN_VERSION}-slim +ARG TARGET_IMAGE_PLATFORM=linux/amd64 ARG OBSIDIAN_VERSION=1.9.14 ARG OBSIDIAN_APPIMAGE_FILE=Obsidian-${OBSIDIAN_VERSION}.AppImage @@ -10,7 +11,7 @@ ARG OBSIDIAN_VERSION ARG OBSIDIAN_APPIMAGE_FILE RUN wget https://github.com/obsidianmd/obsidian-releases/releases/download/v${OBSIDIAN_VERSION}/${OBSIDIAN_APPIMAGE_FILE} -FROM ${BASE_IMAGE} AS obsidian-extractor +FROM ${BASE_IMAGE} AS obsidian-extractor-amd64 ARG OBSIDIAN_APPIMAGE_FILE COPY --from=obsidian-downloader /${OBSIDIAN_APPIMAGE_FILE} /${OBSIDIAN_APPIMAGE_FILE} RUN LIBZ_PATH=$(ldconfig -p | grep 'libz.so.1 ' | awk '{print $NF}' | head -n1) && \ @@ -18,7 +19,20 @@ RUN LIBZ_PATH=$(ldconfig -p | grep 'libz.so.1 ' | awk '{print $NF}' | head -n1) RUN chmod +x ${OBSIDIAN_APPIMAGE_FILE} RUN ./${OBSIDIAN_APPIMAGE_FILE} --appimage-extract -FROM ${BASE_IMAGE} +# `--appimage-extract` won't work on Apple Silicon, hence using a special extraction stage +FROM --platform=${TARGET_IMAGE_PLATFORM} ${BASE_IMAGE} AS obsidian-extractor-arm64 +ARG OBSIDIAN_APPIMAGE_FILE +RUN apt-get update && \ + apt install -y squashfs-tools && \ + rm -rf /var/lib/apt/lists/* +COPY --from=obsidian-downloader /${OBSIDIAN_APPIMAGE_FILE} /${OBSIDIAN_APPIMAGE_FILE} +RUN offset=$(grep -aob 'hsqs' ${OBSIDIAN_APPIMAGE_FILE} | tail -n1 | cut -d: -f1) && \ +dd if=${OBSIDIAN_APPIMAGE_FILE} of=image.squashfs bs=4M iflag=skip_bytes,count_bytes skip=$offset status=progress && \ +unsquashfs image.squashfs + +FROM obsidian-extractor-${TARGETARCH} AS obsidian-extractor + +FROM --platform=${TARGET_IMAGE_PLATFORM} ${BASE_IMAGE} RUN apt-get update && \ apt-get install -y --no-install-recommends --no-install-suggests \ libgtk-3-0 libnss3 libgbm1 libasound2 \