From 91953586e264d564e2ed8dbb3b4df4943d21d584 Mon Sep 17 00:00:00 2001 From: ver4a Date: Sat, 16 Nov 2024 23:38:40 +0100 Subject: [PATCH] Build dnf5 cache and share it among builds (fedora repos) Before this all of the builds had to redownload all metadata, currently this is only done for fedora repositories and not rpmfusion, but that will most likely change when I think of an elegant solution to the problem of not having rpmfusion repositories in the official minimal image.. --- .forgejo/workflows/build-image.yaml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.forgejo/workflows/build-image.yaml b/.forgejo/workflows/build-image.yaml index cd42348..a33f4f0 100644 --- a/.forgejo/workflows/build-image.yaml +++ b/.forgejo/workflows/build-image.yaml @@ -9,14 +9,16 @@ jobs: - uses: actions/checkout@v4 - run: cd ${{ env.GITHUB_WORKSPACE }} - run: podman login -u ${{ vars.REGISTRY_USERNAME }} -p ${{ secrets.REGISTRY_PASSWORD }} ${{ vars.REGISTRY_DOMAIN }} + # Prepare dnf5 metadata cache (fedora repos, rpmfusion will come later) + - run: podman run --replace --rm --pull=always --name kde-dnf-makecache -v ./cache:/var/cache/libdnf5:z registry.fedoraproject.org/fedora-minimal:41 dnf5 makecache # base - - run: podman build . -f Dockerfile.kde --no-cache --pull=always --squash -t ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-kde:main + - run: podman build . -f Dockerfile.kde --no-cache --pull=always -v ./cache:/var/cache/libdnf5:O --squash -t ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-kde:main - run: podman push --compression-format=zstd:chunked --compression-level=${{ vars.COMPRESSION_LEVEL }} ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-kde:main ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-kde:main # base + nvidia - - run: podman build . -f Dockerfile.kde-nvidia --no-cache --pull=never --squash -t ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-kde:main-nvidia + - run: podman build . -f Dockerfile.kde-nvidia --no-cache --pull=never -v ./cache:/var/cache/libdnf5:O --squash -t ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-kde:main-nvidia - run: podman push --compression-format=zstd:chunked --compression-level=${{ vars.COMPRESSION_LEVEL }} ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-kde:main-nvidia ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-kde:main-nvidia # base + nvidia + ver4a's configuration - - run: podman build . -f Dockerfile.kde-nvidia-ver4a --no-cache --pull=never --squash -t ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-kde:main-nvidia-ver4a + - run: podman build . -f Dockerfile.kde-nvidia-ver4a --no-cache --pull=never -v ./cache:/var/cache/libdnf5:O --squash -t ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-kde:main-nvidia-ver4a - run: podman push --compression-format=zstd:chunked --compression-level=${{ vars.COMPRESSION_LEVEL }} ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-kde:main-nvidia-ver4a ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-kde:main-nvidia-ver4a - if: '!cancelled()' run: > @@ -29,11 +31,13 @@ jobs: - uses: actions/checkout@v4 - run: cd ${{ env.GITHUB_WORKSPACE }} - run: podman login -u ${{ vars.REGISTRY_USERNAME }} -p ${{ secrets.REGISTRY_PASSWORD }} ${{ vars.REGISTRY_DOMAIN }} + # Prepare dnf5 metadata cache (fedora repos, rpmfusion will come later)$ + - run: podman run --replace --rm --pull=always --name gnome-dnf-makecache -v ./cache:/var/cache/libdnf5:z registry.fedoraproject.org/fedora-minimal:41 dnf5 makecache # base - - run: podman build . -f Dockerfile.gnome --no-cache --pull=always --squash -t ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-gnome:main + - run: podman build . -f Dockerfile.gnome --no-cache --pull=always -v ./cache:/var/cache/libdnf5:O --squash -t ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-gnome:main - run: podman push --compression-format=zstd:chunked --compression-level=${{ vars.COMPRESSION_LEVEL }} ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-gnome:main ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-gnome:main # base + nvidia - - run: podman build . -f Dockerfile.gnome-nvidia --no-cache --pull=never --squash -t ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-gnome:main-nvidia + - run: podman build . -f Dockerfile.gnome-nvidia --no-cache --pull=never -v ./cache:/var/cache/libdnf5:O --squash -t ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-gnome:main-nvidia - run: podman push --compression-format=zstd:chunked --compression-level=${{ vars.COMPRESSION_LEVEL }} ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-gnome:main-nvidia ${{ vars.REGISTRY_DOMAIN }}/ver4a/onc-gnome:main-nvidia - if: '!cancelled()' run: >