From c0b7167082da7301512c6210922b0c6bf89f0f86 Mon Sep 17 00:00:00 2001 From: Johannes Altmanninger Date: Fri, 31 Oct 2025 15:14:28 +0100 Subject: [PATCH] Remove unused docker images for frozen OS releases Most of our docker images are for an OS release which is past EOL. Most are not checked in CI, which leads to more staleness. It's not obvious which docker are expected to work and which are best-effort. I've updated all of them in the past, which would be slightly easier if we got rid of the redundancy. Remove most unused ones for now, to reduce confusion and maintenance effort. Some Ubuntu images are replaced by docker/ubuntu-latest-lts.Dockerfile docker/ubuntu-oldest-supported.Dockerfile Leave around the fedora:latest and opensuse/tumbleweed:latest images for now, though I don't think there's a reason to publish them in build_docker_images until we add CI jobs. We can add some images back (even past-EOL versions) but preferrably with a documentted update policy (see next commit) and CI tests (could be a nightly/weekly/pre-release check). --- .cirrus.yml | 20 -------- .github/workflows/build_docker_images.yml | 22 --------- docker/centos9.Dockerfile | 40 --------------- docker/focal-32bit.Dockerfile | 50 ------------------- docker/focal-arm64.Dockerfile | 42 ---------------- docker/focal.Dockerfile | 40 --------------- docker/jammy-armv7-32bit.Dockerfile | 44 ----------------- docker/jammy-asan.Dockerfile | 59 ----------------------- docker/jammy-tsan.Dockerfile | 51 -------------------- docker/jammy.Dockerfile | 44 ----------------- docker/noble.Dockerfile | 43 ----------------- 11 files changed, 455 deletions(-) delete mode 100644 docker/centos9.Dockerfile delete mode 100644 docker/focal-32bit.Dockerfile delete mode 100644 docker/focal-arm64.Dockerfile delete mode 100644 docker/focal.Dockerfile delete mode 100644 docker/jammy-armv7-32bit.Dockerfile delete mode 100644 docker/jammy-asan.Dockerfile delete mode 100644 docker/jammy-tsan.Dockerfile delete mode 100644 docker/jammy.Dockerfile delete mode 100644 docker/noble.Dockerfile diff --git a/.cirrus.yml b/.cirrus.yml index a46e7565b..a7b83aa04 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -23,26 +23,6 @@ linux_task: - ninja fish_run_tests only_if: $CIRRUS_REPO_OWNER == 'fish-shell' -linux_arm_task: - matrix: - - name: focal-arm64 - arm_container: - image: ghcr.io/fish-shell/fish-ci/focal-arm64 - - name: jammy-armv7-32bit - arm_container: - image: ghcr.io/fish-shell/fish-ci/jammy-armv7-32bit - tests_script: - # cirrus at times gives us 32 procs and 2 GB of RAM - # Unrestriced parallelism results in OOM - - lscpu || true - - (cat /proc/meminfo | grep MemTotal) || true - - mkdir build && cd build - - FISH_TEST_MAX_CONCURRENCY=6 cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug .. - - ninja -j 6 fish - - ninja fish_run_tests - # CI task disabled during RIIR transition - only_if: false && $CIRRUS_REPO_OWNER == 'fish-shell' - freebsd_task: matrix: - name: FreeBSD 14 diff --git a/.github/workflows/build_docker_images.yml b/.github/workflows/build_docker_images.yml index 9dba5bf86..b2a89ca90 100644 --- a/.github/workflows/build_docker_images.yml +++ b/.github/workflows/build_docker_images.yml @@ -32,28 +32,6 @@ jobs: target: alpine - os: ubuntu-latest target: ubuntu-oldest-supported - - os: ubuntu-latest - target: centos9 - - os: ubuntu-latest - target: fedora - - os: ubuntu-latest - target: focal-32bit - - os: ubuntu-24.04-arm - target: focal-arm64 - - os: ubuntu-latest - target: focal - - os: ubuntu-24.04-arm - target: jammy-armv7-32bit - - os: ubuntu-latest - target: jammy-asan - - os: ubuntu-latest - target: jammy-tsan - - os: ubuntu-latest - target: jammy - - os: ubuntu-latest - target: noble - - os: ubuntu-latest - target: opensuse-tumbleweed runs-on: ${{ matrix.os }} steps: diff --git a/docker/centos9.Dockerfile b/docker/centos9.Dockerfile deleted file mode 100644 index 69ac3f0f6..000000000 --- a/docker/centos9.Dockerfile +++ /dev/null @@ -1,40 +0,0 @@ -FROM tgagor/centos-stream:latest -LABEL org.opencontainers.image.source=https://github.com/fish-shell/fish-shell - -# See https://stackoverflow.com/questions/70963985/error-failed-to-download-metadata-for-repo-appstream-cannot-prepare-internal - -RUN cd /etc/yum.repos.d/ && \ - sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* && \ - sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* - - -RUN dnf -y install dnf-plugins-core \ - && yum install --assumeyes epel-release \ - && yum install --assumeyes \ - cargo \ - diffutils \ - gcc-c++ \ - git \ - python3 \ - python3-pexpect \ - openssl \ - pcre2-devel \ - rustc \ - sudo \ - tmux \ - && yum clean all - -RUN groupadd -g 1000 fishuser \ - && useradd -p $(openssl passwd -1 fish) -d /home/fishuser -m -u 1000 -g 1000 fishuser -G wheel \ - && mkdir -p /home/fishuser/fish-build \ - && mkdir /fish-source \ - && chown -R fishuser:fishuser /home/fishuser /fish-source - -USER fishuser -WORKDIR /home/fishuser - -COPY fish_run_tests.sh / - -ENV FISH_CHECK_LINT=false - -CMD /fish_run_tests.sh diff --git a/docker/focal-32bit.Dockerfile b/docker/focal-32bit.Dockerfile deleted file mode 100644 index 0552bc538..000000000 --- a/docker/focal-32bit.Dockerfile +++ /dev/null @@ -1,50 +0,0 @@ -FROM ubuntu:20.04 -LABEL org.opencontainers.image.source=https://github.com/fish-shell/fish-shell - -ENV LANG=C.UTF-8 -ENV LC_ALL=C.UTF-8 -ENV DEBIAN_FRONTEND=noninteractive - -RUN apt-get update \ - && apt-get -y install --no-install-recommends \ - build-essential \ - ca-certificates \ - curl \ - g++-multilib \ - gettext \ - git \ - locales \ - openssl \ - pkg-config \ - python3 \ - python3-pexpect \ - sudo \ - tmux \ - && locale-gen en_US.UTF-8 \ - && apt-get clean - -RUN groupadd -g 1000 fishuser \ - && useradd -p $(openssl passwd -1 fish) -d /home/fishuser -m -u 1000 -g 1000 fishuser \ - && adduser fishuser sudo \ - && mkdir -p /home/fishuser/fish-build \ - && mkdir /fish-source \ - && chown -R fishuser:fishuser /home/fishuser /fish-source - -USER fishuser -WORKDIR /home/fishuser - -RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > /tmp/rustup.sh \ - && sh /tmp/rustup.sh -y --no-modify-path --default-toolchain nightly --component rust-src -ENV PATH=/home/fishuser/.cargo/bin:$PATH - -COPY fish_run_tests.sh / - -ENV \ - CFLAGS=-m32 \ - PCRE2_SYS_STATIC=1 \ - FISH_CHECK_TARGET_TRIPLE=i686-unknown-linux-gnu - -ENV FISH_CHECK_LINT=false - -CMD rustup target add ${FISH_CHECK_TARGET_TRIPLE} \ - && /fish_run_tests.sh diff --git a/docker/focal-arm64.Dockerfile b/docker/focal-arm64.Dockerfile deleted file mode 100644 index 698c8a529..000000000 --- a/docker/focal-arm64.Dockerfile +++ /dev/null @@ -1,42 +0,0 @@ -FROM arm64v8/ubuntu:focal -LABEL org.opencontainers.image.source=https://github.com/fish-shell/fish-shell - -ENV LANG=C.UTF-8 -ENV LC_ALL=C.UTF-8 -ENV DEBIAN_FRONTEND=noninteractive - -RUN apt-get update \ - && apt-get -y install --no-install-recommends \ - cmake ninja-build \ - build-essential \ - ca-certificates \ - cargo \ - clang \ - gettext \ - git \ - libpcre2-dev \ - locales \ - openssl \ - python3 \ - python3-pexpect \ - rustc \ - sudo \ - tmux \ - && locale-gen en_US.UTF-8 \ - && apt-get clean - -RUN groupadd -g 1000 fishuser \ - && useradd -p $(openssl passwd -1 fish) -d /home/fishuser -m -u 1000 -g 1000 fishuser \ - && adduser fishuser sudo \ - && mkdir -p /home/fishuser/fish-build \ - && mkdir /fish-source \ - && chown -R fishuser:fishuser /home/fishuser /fish-source - -USER fishuser -WORKDIR /home/fishuser - -COPY fish_run_tests.sh / - -ENV FISH_CHECK_LINT=false - -CMD /fish_run_tests.sh diff --git a/docker/focal.Dockerfile b/docker/focal.Dockerfile deleted file mode 100644 index 888ea8d94..000000000 --- a/docker/focal.Dockerfile +++ /dev/null @@ -1,40 +0,0 @@ -FROM ubuntu:20.04 -LABEL org.opencontainers.image.source=https://github.com/fish-shell/fish-shell - -ENV LANG=C.UTF-8 -ENV LC_ALL=C.UTF-8 -ENV DEBIAN_FRONTEND=noninteractive - -RUN apt-get update \ - && apt-get -y install --no-install-recommends \ - build-essential \ - ca-certificates \ - cargo \ - gettext \ - git \ - locales \ - openssl \ - pkg-config \ - python3 \ - python3-pexpect \ - rustc \ - sudo \ - tmux \ - && locale-gen en_US.UTF-8 \ - && apt-get clean - -RUN groupadd -g 1000 fishuser \ - && useradd -p $(openssl passwd -1 fish) -d /home/fishuser -m -u 1000 -g 1000 fishuser \ - && adduser fishuser sudo \ - && mkdir -p /home/fishuser/fish-build \ - && mkdir /fish-source \ - && chown -R fishuser:fishuser /home/fishuser /fish-source - -USER fishuser -WORKDIR /home/fishuser - -COPY fish_run_tests.sh / - -ENV FISH_CHECK_LINT=false - -CMD /fish_run_tests.sh diff --git a/docker/jammy-armv7-32bit.Dockerfile b/docker/jammy-armv7-32bit.Dockerfile deleted file mode 100644 index 1e7a98d57..000000000 --- a/docker/jammy-armv7-32bit.Dockerfile +++ /dev/null @@ -1,44 +0,0 @@ -FROM arm32v7/ubuntu:jammy -LABEL org.opencontainers.image.source=https://github.com/fish-shell/fish-shell - -ENV LANG=C.UTF-8 -ENV LC_ALL=C.UTF-8 -ENV DEBIAN_FRONTEND=noninteractive - -RUN apt-get update \ - && apt-get -y install --no-install-recommends \ - cmake ninja-build \ - build-essential \ - ca-certificates \ - cargo \ - file \ - g++ \ - gettext \ - git \ - libpcre2-dev \ - locales \ - openssl \ - pkg-config \ - python3 \ - python3-pexpect \ - rustc \ - sudo \ - tmux \ - && locale-gen en_US.UTF-8 \ - && apt-get clean - -RUN groupadd -g 1000 fishuser \ - && useradd -p $(openssl passwd -1 fish) -d /home/fishuser -m -u 1000 -g 1000 fishuser \ - && adduser fishuser sudo \ - && mkdir -p /home/fishuser/fish-build \ - && mkdir /fish-source \ - && chown -R fishuser:fishuser /home/fishuser /fish-source - -USER fishuser -WORKDIR /home/fishuser - -COPY fish_run_tests.sh / - -ENV FISH_CHECK_LINT=false - -CMD /fish_run_tests.sh diff --git a/docker/jammy-asan.Dockerfile b/docker/jammy-asan.Dockerfile deleted file mode 100644 index b4df8d3ba..000000000 --- a/docker/jammy-asan.Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -FROM ubuntu:jammy -LABEL org.opencontainers.image.source=https://github.com/fish-shell/fish-shell - -ENV LANG=C.UTF-8 -ENV LC_ALL=C.UTF-8 - -RUN apt-get update \ - && apt-get -y install --no-install-recommends \ - build-essential \ - ca-certificates \ - clang \ - curl \ - gettext \ - git \ - libpcre2-dev \ - locales \ - openssl \ - python3 \ - python3-pexpect \ - sudo \ - tmux \ - && locale-gen en_US.UTF-8 \ - && apt-get clean - -RUN groupadd -g 1000 fishuser \ - && useradd -p $(openssl passwd -1 fish) -d /home/fishuser -m -u 1000 -g 1000 fishuser \ - && adduser fishuser sudo \ - && mkdir -p /home/fishuser/fish-build \ - && mkdir /fish-source \ - && chown -R fishuser:fishuser /home/fishuser /fish-source - -RUN llvm_version=$(clang --version | awk 'NR==1 { split($NF, version, "."); print version[1] }') \ - && echo "$llvm_version" >/.llvm-version - -USER fishuser -WORKDIR /home/fishuser - -RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > /tmp/rustup.sh \ - && sh /tmp/rustup.sh -y --no-modify-path --default-toolchain nightly --component rust-src -ENV PATH=/home/fishuser/.cargo/bin:$PATH - -COPY fish_run_tests.sh / - -ENV \ - RUSTFLAGS=-Zsanitizer=address \ - RUSTDOCFLAGS=-Zsanitizer=address \ - FISH_CHECK_CARGO_ARGS='-Zbuild-std --features=tsan' \ - FISH_CHECK_TARGET_TRIPLE=x86_64-unknown-linux-gnu \ - FISH_CI_SAN=1 \ - FISH_TEST_MAX_CONCURRENCY=4 \ - CC=clang \ - CXX=clang++ \ - ASAN_OPTIONS=check_initialization_order=1:detect_stack_use_after_return=1:detect_leaks=1 \ - LSAN_OPTIONS=verbosity=0:log_threads=0:use_tls=1:print_suppressions=0:suppressions=/fish-source/build_tools/lsan_suppressions.txt - -ENV FISH_CHECK_LINT=false - -CMD ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-$(cat /.llvm-version) \ - && /fish_run_tests.sh diff --git a/docker/jammy-tsan.Dockerfile b/docker/jammy-tsan.Dockerfile deleted file mode 100644 index f34c52c0c..000000000 --- a/docker/jammy-tsan.Dockerfile +++ /dev/null @@ -1,51 +0,0 @@ -FROM ubuntu:jammy -LABEL org.opencontainers.image.source=https://github.com/fish-shell/fish-shell - -ENV LANG=C.UTF-8 -ENV LC_ALL=C.UTF-8 - -RUN apt-get update \ - && apt-get -y install --no-install-recommends \ - build-essential \ - ca-certificates \ - clang \ - curl \ - gettext \ - git \ - libpcre2-dev \ - locales \ - openssl \ - python3 \ - python3-pexpect \ - sudo \ - tmux \ - && locale-gen en_US.UTF-8 \ - && apt-get clean - -RUN groupadd -g 1000 fishuser \ - && useradd -p $(openssl passwd -1 fish) -d /home/fishuser -m -u 1000 -g 1000 fishuser \ - && adduser fishuser sudo \ - && mkdir -p /home/fishuser/fish-build \ - && mkdir /fish-source \ - && chown -R fishuser:fishuser /home/fishuser /fish-source - -USER fishuser -WORKDIR /home/fishuser - -RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > /tmp/rustup.sh \ - && sh /tmp/rustup.sh -y --no-modify-path --default-toolchain nightly --component rust-src -ENV PATH=/home/fishuser/.cargo/bin:$PATH - -COPY fish_run_tests.sh / - -ENV \ - RUSTFLAGS=-Zsanitizer=thread \ - RUSTDOCFLAGS=-Zsanitizer=thread \ - FISH_CHECK_CARGO_ARGS='-Zbuild-std --features=tsan' \ - FISH_CHECK_TARGET_TRIPLE=x86_64-unknown-linux-gnu \ - FISH_CI_SAN=1 \ - FISH_TEST_MAX_CONCURRENCY=4 - -ENV FISH_CHECK_LINT=false - -CMD /fish_run_tests.sh diff --git a/docker/jammy.Dockerfile b/docker/jammy.Dockerfile deleted file mode 100644 index 476a0d55c..000000000 --- a/docker/jammy.Dockerfile +++ /dev/null @@ -1,44 +0,0 @@ -FROM ubuntu:jammy -LABEL org.opencontainers.image.source=https://github.com/fish-shell/fish-shell - -ENV LANG=C.UTF-8 -ENV LC_ALL=C.UTF-8 - -RUN apt-get update \ - && apt-get -y install --no-install-recommends \ - cmake ninja-build \ - build-essential \ - ca-certificates \ - cargo \ - clang \ - gettext \ - git \ - libpcre2-dev \ - locales \ - openssl \ - python3 \ - python3-pexpect \ - rustc \ - sudo \ - tmux \ - python3-pip \ - && locale-gen en_US.UTF-8 \ - && apt-get clean - -RUN pip install black - -RUN groupadd -g 1000 fishuser \ - && useradd -p $(openssl passwd -1 fish) -d /home/fishuser -m -u 1000 -g 1000 fishuser \ - && adduser fishuser sudo \ - && mkdir -p /home/fishuser/fish-build \ - && mkdir /fish-source \ - && chown -R fishuser:fishuser /home/fishuser /fish-source - -USER fishuser -WORKDIR /home/fishuser - -COPY fish_run_tests.sh / - -ENV FISH_CHECK_LINT=false - -CMD /fish_run_tests.sh diff --git a/docker/noble.Dockerfile b/docker/noble.Dockerfile deleted file mode 100644 index 5bd45691f..000000000 --- a/docker/noble.Dockerfile +++ /dev/null @@ -1,43 +0,0 @@ -FROM ubuntu:noble -LABEL org.opencontainers.image.source=https://github.com/fish-shell/fish-shell - -ENV LANG=C.UTF-8 -ENV LC_ALL=C.UTF-8 - -RUN apt-get update \ - && apt-get -y install --no-install-recommends \ - adduser \ - build-essential \ - ca-certificates \ - curl \ - gettext \ - git \ - libpcre2-dev \ - locales \ - openssl \ - python3 \ - python3-pexpect \ - tmux \ - sudo \ - && locale-gen en_US.UTF-8 \ - && apt-get clean - -RUN groupadd -g 1001 fishuser \ - && useradd -p $(openssl passwd -1 fish) -d /home/fishuser -m -u 1001 -g 1001 fishuser \ - && adduser fishuser sudo \ - && mkdir -p /home/fishuser/fish-build \ - && mkdir /fish-source \ - && chown -R fishuser:fishuser /home/fishuser /fish-source - -USER fishuser -WORKDIR /home/fishuser - -RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > /tmp/rustup.sh \ - && sh /tmp/rustup.sh -y --no-modify-path --default-toolchain 1.75 -ENV PATH=/home/fishuser/.cargo/bin:$PATH - -COPY fish_run_tests.sh / - -ENV FISH_CHECK_LINT=false - -CMD /fish_run_tests.sh