From 71e4d7508723120125605819e34063e62fda636f Mon Sep 17 00:00:00 2001 From: chen21019 Date: Wed, 26 Aug 2026 19:24:43 +0800 Subject: [PATCH] build: pin Ubuntu snapshot sources --- Dockerfile | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index 61a73dc..42a6e9e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,7 @@ +# syntax=docker/dockerfile:1.7 # Modified by PastureStack contributors for independent maintenance and rebranding. -ARG UBUNTU_IMAGE=ubuntu:26.04@sha256:3131b4cc82a783df6c9df078f86e01819a13594b865c2cad47bd1bca2b7063bb +ARG UBUNTU_IMAGE=ubuntu:26.04@sha256:2260313b31c8c011cd2eebe728008efac1b3982be73eb71348ea2648d2c0e09b FROM ${UBUNTU_IMAGE} AS tool-builder ARG GO_VERSION=1.27.0 @@ -12,7 +13,11 @@ ARG GOMPLATE_GIT_COMMIT=0f4c15bc8521939478426bf6ffca4718837b9cb4 ARG DOCKER_VERSION=29.4.2 ARG DOCKER_GIT_COMMIT=055a478ea9010a19d0d4674c0d0e87ade37a4223 ARG DOCKER_SOURCE_DATE_EPOCH=1776697064 -ARG UBUNTU_MIRROR=http://archive.ubuntu.com/ubuntu +ARG UBUNTU_SNAPSHOT=20260825T000000Z + +ADD --checksum=sha256:6077d27c6b6f8b23590cb01ff877ed8c804a67a5442cc32b5a33da10d2bd0e90 \ + https://snapshot.ubuntu.com/ubuntu/20260825T000000Z/pool/main/c/ca-certificates/ca-certificates_20260601~26.04.1_all.deb \ + /tmp/ca-certificates.deb ENV DEBIAN_FRONTEND=noninteractive \ CGO_ENABLED=0 \ @@ -24,10 +29,13 @@ ENV DEBIAN_FRONTEND=noninteractive \ PATH=/usr/local/go/bin:${PATH} RUN set -eux; \ - find /etc/apt -type f \( -name '*.list' -o -name '*.sources' \) -exec sed -i \ - -e "s|http://security.ubuntu.com/ubuntu|${UBUNTU_MIRROR}|g" \ - -e "s|http://archive.ubuntu.com/ubuntu|${UBUNTU_MIRROR}|g" {} +; \ - printf 'Acquire::Retries "5";\nAcquire::http::Timeout "30";\nAcquire::https::Timeout "30";\nAcquire::http::Pipeline-Depth "0";\n' > /etc/apt/apt.conf.d/80pasturestack-retries; \ + mkdir -p /tmp/ca-bootstrap /etc/ssl/certs; \ + dpkg-deb --extract /tmp/ca-certificates.deb /tmp/ca-bootstrap; \ + find /tmp/ca-bootstrap/usr/share/ca-certificates -type f -name '*.crt' | LC_ALL=C sort | while IFS= read -r certificate; do sed -e '$a\' "${certificate}"; done > /etc/ssl/certs/ca-certificates.crt; \ + rm -rf /tmp/ca-bootstrap /tmp/ca-certificates.deb; \ + rm -f /etc/apt/sources.list /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources; \ + printf 'Types: deb\nURIs: https://snapshot.ubuntu.com/ubuntu/%s\nSuites: resolute resolute-updates resolute-backports resolute-security\nComponents: main universe restricted multiverse\nSigned-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg\nSnapshot: no\n' "${UBUNTU_SNAPSHOT}" > /etc/apt/sources.list.d/pasturestack-snapshot.sources; \ + printf 'Acquire::Retries "5";\nAcquire::http::Timeout "30";\nAcquire::https::Timeout "30";\nAcquire::http::Pipeline-Depth "0";\nAcquire::https::CaInfo "/etc/ssl/certs/ca-certificates.crt";\nAcquire::https::Verify-Peer "true";\nAcquire::https::Verify-Host "true";\nAcquire::AllowInsecureRepositories "false";\nAPT::Get::AllowUnauthenticated "false";\n' > /etc/apt/apt.conf.d/80pasturestack-snapshot; \ apt-get update; \ apt-get install -y --no-install-recommends \ ca-certificates \ @@ -99,16 +107,17 @@ RUN set -eux; \ FROM ${UBUNTU_IMAGE} ARG IMAGE_VERSION=dev -ARG UBUNTU_MIRROR=http://archive.ubuntu.com/ubuntu +ARG UBUNTU_SNAPSHOT=20260825T000000Z + +COPY --from=tool-builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt ENV DEBIAN_FRONTEND=noninteractive \ SYSTEM_IMAGE_PRELOADER_VERSION=${IMAGE_VERSION} RUN set -eux; \ - find /etc/apt -type f \( -name '*.list' -o -name '*.sources' \) -exec sed -i \ - -e "s|http://security.ubuntu.com/ubuntu|${UBUNTU_MIRROR}|g" \ - -e "s|http://archive.ubuntu.com/ubuntu|${UBUNTU_MIRROR}|g" {} +; \ - printf 'Acquire::Retries "5";\nAcquire::http::Timeout "30";\nAcquire::https::Timeout "30";\nAcquire::http::Pipeline-Depth "0";\n' > /etc/apt/apt.conf.d/80pasturestack-retries; \ + rm -f /etc/apt/sources.list /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources; \ + printf 'Types: deb\nURIs: https://snapshot.ubuntu.com/ubuntu/%s\nSuites: resolute resolute-updates resolute-backports resolute-security\nComponents: main universe restricted multiverse\nSigned-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg\nSnapshot: no\n' "${UBUNTU_SNAPSHOT}" > /etc/apt/sources.list.d/pasturestack-snapshot.sources; \ + printf 'Acquire::Retries "5";\nAcquire::http::Timeout "30";\nAcquire::https::Timeout "30";\nAcquire::http::Pipeline-Depth "0";\nAcquire::https::CaInfo "/etc/ssl/certs/ca-certificates.crt";\nAcquire::https::Verify-Peer "true";\nAcquire::https::Verify-Host "true";\nAcquire::AllowInsecureRepositories "false";\nAPT::Get::AllowUnauthenticated "false";\n' > /etc/apt/apt.conf.d/80pasturestack-snapshot; \ apt-get update; \ apt-get install -y --no-install-recommends \ bash \