From a9f0aa6048c43eb86835ce432f69dcc96ece4244 Mon Sep 17 00:00:00 2001 From: Eli Mallon Date: Wed, 21 May 2025 23:00:43 -0700 Subject: [PATCH] build: fixes for flaky apt in docker builds * build: custom sources.list * build: --context-sub-path on kaniko * build: add custom winehq mirror ig * build: whatever, build from root * build: add apt-mirror instructions * build: no cache i guess??? * build: i don't even know. try azure? --- .ci/dockerfile-hash.yaml | 2 +- Makefile | 3 +-- docker/build.Dockerfile | 52 ++++++++++++++++++++++----------------- docker/sources.list | 17 +++++++++++++ docker/winehq.key | 53 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 101 insertions(+), 26 deletions(-) create mode 100644 docker/sources.list create mode 100644 docker/winehq.key diff --git a/.ci/dockerfile-hash.yaml b/.ci/dockerfile-hash.yaml index 9f88ab8e9..2114290e5 100644 --- a/.ci/dockerfile-hash.yaml +++ b/.ci/dockerfile-hash.yaml @@ -1,2 +1,2 @@ variables: - DOCKERFILE_HASH: 9210e58f55aae506561fe1e3e8c38336d062a26e \ No newline at end of file + DOCKERFILE_HASH: 8f02476e6d54c58386f461a8b2cffe2b2d53a9bd \ No newline at end of file diff --git a/Makefile b/Makefile index ae2019767..0f5febfb4 100644 --- a/Makefile +++ b/Makefile @@ -452,8 +452,7 @@ docker-test: docker-build-builder docker-test-in-container .PHONY: docker-build-builder docker-build-builder: - cd docker \ - && podman build --target=builder --os=linux --arch=amd64 -f build.Dockerfile -t dist.stream.place/streamplace/streamplace:builder . + podman build --target=builder --os=linux --arch=amd64 -f docker/build.Dockerfile -t dist.stream.place/streamplace/streamplace:builder . .PHONY: docker-build-in-container docker-build-in-container: diff --git a/docker/build.Dockerfile b/docker/build.Dockerfile index 9210e58f5..8f02476e6 100644 --- a/docker/build.Dockerfile +++ b/docker/build.Dockerfile @@ -10,30 +10,36 @@ ENV GO_VERSION 1.24.2 ENV NODE_VERSION 22.15.0 ENV DEBIAN_FRONTEND noninteractive +RUN apt update && apt install -y ca-certificates + +ADD docker/sources.list /etc/apt/sources.list +ADD docker/winehq.key /etc/apt/keyrings/winehq-archive.key +RUN dpkg --add-architecture i386 && dpkg --add-architecture arm64 + +# Haven't automated it yet, so here's my instructors for mirroring winehq: +# /etc/apt/mirror.list: +# deb-i386 https://dl.winehq.org/wine-builds/ubuntu jammy main +# deb-all https://dl.winehq.org/wine-builds/ubuntu jammy main +# deb-amd64 [arch=amd64,i386 signed-by=/etc/apt/keyrings/winehq-archive.key] https://dl.winehq.org/wine-builds/ubuntu jammy main +# +# go install github.com/minio/mc@latest +# mc alias set streamplace-crap https://storage.googleapis.com/ ACCESS_KEY SECRET_KEY +# apt-mirror +# mc mirror --overwrite /var/spool/apt-mirror/mirror/dl.winehq.org/ streamplace-crap/streamplace-crap/dl.winehq.org/ + RUN apt update \ && apt install -y build-essential curl git openjdk-17-jdk unzip jq g++ python3-pip ninja-build \ gcc-aarch64-linux-gnu g++-aarch64-linux-gnu clang lld qemu-user-static pkg-config \ nasm gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64-tools zip bison flex expect \ mono-runtime nuget mono-xsp4 squashfs-tools \ + libc6:arm64 libstdc++6:arm64 \ + && apt install -y --install-recommends winehq-stable \ && pip install meson tomli \ && curl -L --fail https://go.dev/dl/go$GO_VERSION.linux-$TARGETARCH.tar.gz -o go.tar.gz \ && tar -C /usr/local -xf go.tar.gz \ && rm go.tar.gz ENV PATH $PATH:/usr/local/go/bin:/root/go/bin:/root/.cargo/bin -RUN dpkg --add-architecture i386 \ - && curl -L -o /etc/apt/sources.list.d/winehq-jammy.sources https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources \ - && curl -o /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key \ - && apt update && apt install -y --install-recommends winehq-stable - -RUN echo 'deb [arch=arm64] http://ports.ubuntu.com/ jammy main multiverse universe' >> /etc/apt/sources.list \ - && echo 'deb [arch=arm64] http://ports.ubuntu.com/ jammy-security main multiverse universe' >> /etc/apt/sources.list \ - && echo 'deb [arch=arm64] http://ports.ubuntu.com/ jammy-backports main multiverse universe' >> /etc/apt/sources.list \ - && echo 'deb [arch=arm64] http://ports.ubuntu.com/ jammy-updates main multiverse universe' >> /etc/apt/sources.list \ - && dpkg --add-architecture arm64 \ - && bash -c "apt update || echo 'ignoring errors'" \ - && apt install -y libc6:arm64 libstdc++6:arm64 - RUN export NODEARCH="$TARGETARCH" \ && if [ "$TARGETARCH" = "amd64" ]; then export NODEARCH="x64"; fi \ && curl -L --fail https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$NODEARCH.tar.xz -o node.tar.gz \ @@ -63,15 +69,15 @@ RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > rustup.sh \ RUN go env -w GOTOOLCHAIN=go$GO_VERSION -FROM builder AS cached-builder -ARG CI_COMMIT_BRANCH=next -ENV CI_COMMIT_BRANCH $CI_COMMIT_BRANCH -WORKDIR /cached-build -RUN git clone https://git.stream.place/streamplace/streamplace \ - && cd streamplace \ - && make version install check app android -j$(nproc) \ - && make node \ - && cd .. \ - && rm -rf streamplace +# FROM builder AS cached-builder +# ARG CI_COMMIT_BRANCH=next +# ENV CI_COMMIT_BRANCH $CI_COMMIT_BRANCH +# WORKDIR /cached-build +# RUN git clone https://git.stream.place/streamplace/streamplace \ +# && cd streamplace \ +# && make version install check app android -j$(nproc) \ +# && make node \ +# && cd .. \ +# && rm -rf streamplace LABEL org.opencontainers.image.authors="support@stream.place" diff --git a/docker/sources.list b/docker/sources.list new file mode 100644 index 000000000..afb08b7c4 --- /dev/null +++ b/docker/sources.list @@ -0,0 +1,17 @@ +deb [arch=amd64,i386] http://azure.archive.ubuntu.com/ubuntu/ jammy main restricted +deb [arch=amd64,i386] http://azure.archive.ubuntu.com/ubuntu/ jammy-updates main restricted +deb [arch=amd64,i386] http://azure.archive.ubuntu.com/ubuntu/ jammy universe +deb [arch=amd64,i386] http://azure.archive.ubuntu.com/ubuntu/ jammy-updates universe +deb [arch=amd64,i386] http://azure.archive.ubuntu.com/ubuntu/ jammy multiverse +deb [arch=amd64,i386] http://azure.archive.ubuntu.com/ubuntu/ jammy-updates multiverse +deb [arch=amd64,i386] http://azure.archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse +deb [arch=amd64,i386] http://security.ubuntu.com/ubuntu/ jammy-security main restricted +deb [arch=amd64,i386] http://security.ubuntu.com/ubuntu/ jammy-security universe +deb [arch=amd64,i386] http://security.ubuntu.com/ubuntu/ jammy-security multiverse + +deb [arch=amd64,i386 signed-by=/etc/apt/keyrings/winehq-archive.key] https://storage.googleapis.com/streamplace-crap/dl.winehq.org/wine-builds/ubuntu/ jammy main + +deb [arch=arm64] http://azure.ports.ubuntu.com/ jammy main multiverse universe +deb [arch=arm64] http://azure.ports.ubuntu.com/ jammy-security main multiverse universe +deb [arch=arm64] http://azure.ports.ubuntu.com/ jammy-backports main multiverse universe +deb [arch=arm64] http://azure.ports.ubuntu.com/ jammy-updates main multiverse universe diff --git a/docker/winehq.key b/docker/winehq.key new file mode 100644 index 000000000..2e3bc5932 --- /dev/null +++ b/docker/winehq.key @@ -0,0 +1,53 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +uNBEXR+VjRvm +=NUWj +-----END PGP PUBLIC KEY BLOCK----- -- 2.51.2