From f471472693aff0027fb20d39e80d54c6cba6c3b5 Mon Sep 17 00:00:00 2001 From: thislight Date: Sun, 14 Jul 2024 14:33:29 +0800 Subject: [PATCH] fedora-40: splits to two images --- .forgejo/workflows/build-fedora-40.yml | 15 ++++++- fedora-40-minimal/Containerfile | 33 ++++++++++++++ .../containers.conf | 0 .../containers/storage.conf | 0 fedora-40/Containerfile | 45 ++++--------------- 5 files changed, 55 insertions(+), 38 deletions(-) create mode 100644 fedora-40-minimal/Containerfile rename {fedora-40 => fedora-40-minimal}/containers.conf (100%) rename {fedora-40 => fedora-40-minimal}/containers/storage.conf (100%) diff --git a/.forgejo/workflows/build-fedora-40.yml b/.forgejo/workflows/build-fedora-40.yml index 3b5c920..e21e0b3 100644 --- a/.forgejo/workflows/build-fedora-40.yml +++ b/.forgejo/workflows/build-fedora-40.yml @@ -6,6 +6,7 @@ on: branches: ['master'] paths: - "fedora-40/**" + - "fedora-40-minimal/**" - "shared/**" - ".forgejo/workflows/build-fedora-40.yml" schedule: @@ -22,12 +23,23 @@ jobs: run: 'dnf install -y --setopt install_weak_deps=False nodejs git buildah qemu-user-static qemu-user-binfmt fuse-overlayfs --exclude container-selinux' - name: Checkout uses: actions/checkout@v3 + - name: Fulfill Package Manager Cache + run: dnf makecache -y --releasever 40 + - name: Build Minimal Images + run: | + cd fedora-40-minimal && \ + buildah --storage-opt mount_program=/usr/bin/fuse-overlayfs --cgroup-manager=cgroupfs manifest create code.lightstands.xyz/standcoded/fedora:40-minimal && \ + buildah --storage-opt mount_program=/usr/bin/fuse-overlayfs --cgroup-manager=cgroupfs build --arch aarch64 \ + --pid=host --ipc=host --network=host --userns=host --uts=host -v /var/cache/dnf:/var/cache/dnf:O \ + --manifest code.lightstands.xyz/standcoded/fedora:40-minimal . + env: + BUILDAH_ISOLATION: chroot - name: Build Images run: | cd fedora-40 && \ buildah --storage-opt mount_program=/usr/bin/fuse-overlayfs --cgroup-manager=cgroupfs manifest create code.lightstands.xyz/standcoded/fedora:40 && \ buildah --storage-opt mount_program=/usr/bin/fuse-overlayfs --cgroup-manager=cgroupfs build --arch aarch64 \ - --pid=host --ipc=host --network=host --userns=host --uts=host --squash \ + --pid=host --ipc=host --network=host --userns=host --uts=host -v /var/cache/dnf:/var/cache/dnf:O \ --manifest code.lightstands.xyz/standcoded/fedora:40 . env: BUILDAH_ISOLATION: chroot @@ -35,5 +47,6 @@ jobs: run: | buildah login code.lightstands.xyz \ --username ${{ env.GITHUB_ACTOR }} --password ${{ secrets.PUBLICATION_TOKEN }} && \ + buildah manifest push code.lightstands.xyz/standcoded/fedora:40-minimal --all && \ buildah manifest push code.lightstands.xyz/standcoded/fedora:40 --all diff --git a/fedora-40-minimal/Containerfile b/fedora-40-minimal/Containerfile new file mode 100644 index 0000000..f96316b --- /dev/null +++ b/fedora-40-minimal/Containerfile @@ -0,0 +1,33 @@ +FROM fedora:40 + +RUN dnf update -y --setopt install_weak_deps=False && \ + dnf install -y --setopt install_weak_deps=False git git-lfs git-ftp fuse-overlayfs \ + nodejs nodejs-npm python3-devel python3-pip pipx coreutils bash clang gcc \ + aria2 jq yq zstd brotli perl perl-CPAN ruby rubygems sqlite && \ + dnf group install -y --setopt install_weak_deps=False "Container Management" --exclude container-selinux && \ + dnf clean all -y + +ADD containers.conf /etc/containers/ +ADD containers/storage.conf /etc/containers/ + +# Adjust storage.conf to enable Fuse storage. +RUN sed -i -e 's|^#mount_program|mount_program|g' -e '/additionalimage.*/a "/var/lib/shared",' /etc/containers/storage.conf +RUN mkdir -p /var/lib/shared/overlay-images /var/lib/shared/overlay-layers; touch /var/lib/shared/overlay-images/images.lock; touch /var/lib/shared/overlay-layers/layers.lock + +# Define uid/gid ranges for our user https://github.com/containers/buildah/issues/3053 +RUN useradd action && \ + echo -e "action:1:999\action:1001:64535" > /etc/subuid && \ + echo -e "action:1:999\action:1001:64535" > /etc/subgid && \ + mkdir -p /home/action/.local/share/containers && \ + mkdir -p /home/action/.config/containers && \ + chown -R action:action /home/action + +VOLUME /var/lib/containers +VOLUME /home/action/.local/share/containers + +# Set up environment variables to note that this is +# not starting with usernamespace and default to +# isolate the filesystem with chroot. +ENV _BUILDAH_STARTED_IN_USERNS="" BUILDAH_ISOLATION=chroot + +ENTRYPOINT [ "/bin/bash" ] diff --git a/fedora-40/containers.conf b/fedora-40-minimal/containers.conf similarity index 100% rename from fedora-40/containers.conf rename to fedora-40-minimal/containers.conf diff --git a/fedora-40/containers/storage.conf b/fedora-40-minimal/containers/storage.conf similarity index 100% rename from fedora-40/containers/storage.conf rename to fedora-40-minimal/containers/storage.conf diff --git a/fedora-40/Containerfile b/fedora-40/Containerfile index 1fe50bf..c31811a 100644 --- a/fedora-40/Containerfile +++ b/fedora-40/Containerfile @@ -1,46 +1,17 @@ -FROM fedora:40 +FROM code.lightstands.xyz/standcoded/fedora:40-minimal -RUN dnf update -y --setopt install_weak_deps=False && \ - dnf install -y --setopt install_weak_deps=False \ - git git-lfs git-ftp \ - jq yq sqlite sqlite-devel coreutils brotli zstd binutils aria2 bash \ - fuse-overlayfs \ +RUN dnf install -y --setopt install_weak_deps=False \ + sqlite-devel binutils \ bison flex \ - nodejs nodejs-devel nodejs-npm \ - python3-devel python3-pip pipx poetry \ - perl perl-devel perl-CPAN \ - ruby ruby-devel rubygems \ + nodejs-devel \ + poetry \ + perl-devel \ + ruby-devel \ php php-devel composer \ - java-1.8.0-openjdk java-1.8.0-openjdk-devel maven-openjdk8 \ + java-1.8.0-openjdk java-1.8.0-openjdk-devel \ java-11-openjdk java-11-openjdk-devel \ java-17-openjdk java-17-openjdk-devel \ java-21-openjdk java-21-openjdk-devel \ qemu-user-static qemu-user-binfmt && \ dnf group install -y --setopt install_weak_deps=False "C Development Tools and Libraries" && \ - dnf group install -y --setopt install_weak_deps=False "Container Management" --exclude container-selinux &&\ dnf clean all -y - -ADD containers.conf /etc/containers/ -ADD containers/storage.conf /etc/containers/ - -# Adjust storage.conf to enable Fuse storage. -RUN sed -i -e 's|^#mount_program|mount_program|g' -e '/additionalimage.*/a "/var/lib/shared",' /etc/containers/storage.conf -RUN mkdir -p /var/lib/shared/overlay-images /var/lib/shared/overlay-layers; touch /var/lib/shared/overlay-images/images.lock; touch /var/lib/shared/overlay-layers/layers.lock - -# Define uid/gid ranges for our user https://github.com/containers/buildah/issues/3053 -RUN useradd action && \ - echo -e "act:1:999\act:1001:64535" > /etc/subuid && \ - echo -e "act:1:999\act:1001:64535" > /etc/subgid && \ - mkdir -p /home/action/.local/share/containers && \ - mkdir -p /home/action/.config/containers && \ - chown -R action:action /home/action - -VOLUME /var/lib/containers -VOLUME /home/action/.local/share/containers - -# Set up environment variables to note that this is -# not starting with usernamespace and default to -# isolate the filesystem with chroot. -ENV _BUILDAH_STARTED_IN_USERNS="" BUILDAH_ISOLATION=chroot - -ENTRYPOINT [ "/bin/bash" ]