From f1e2252dabd7c005138ea7eda4cfb10359113806 Mon Sep 17 00:00:00 2001 From: Steven Honson Date: Thu, 12 Sep 2024 02:17:01 +1000 Subject: [PATCH 1/2] Cache wheels --- .github/workflows/container.yml | 42 +++++++++++++++++++++++++++++---- Dockerfile | 6 +++++ 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/.github/workflows/container.yml b/.github/workflows/container.yml index f581da3..a7f512f 100644 --- a/.github/workflows/container.yml +++ b/.github/workflows/container.yml @@ -17,11 +17,25 @@ jobs: matrix: platform: [linux/amd64, linux/386, linux/arm64, linux/arm/v6, linux/arm/v7] steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Declare platform run: | platform=${{ matrix.platform }} echo "PLATFORM=${platform//\//-}" >> $GITHUB_ENV + - name: Cache wheels + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/wheels + key: wheels-${{ env.PLATFORM }}-${{ github.run_id }} + restore-keys: | + wheels-${{ env.PLATFORM }}- + + - name: List wheels + run: ls -lR ${{ github.workspace }}/wheels || true + - name: Setup QEMU uses: docker/setup-qemu-action@v3 @@ -29,7 +43,7 @@ jobs: uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} @@ -41,19 +55,34 @@ jobs: with: images: ghcr.io/${{ github.repository }} - - name: Build images and push by digest + - name: Build stage id: build uses: docker/build-push-action@v6 with: + context: . platforms: ${{ matrix.platform }} + provenance: false + labels: ${{ steps.meta.outputs.labels }} + outputs: type=local,dest=/tmp/build-output + cache-to: type=local,dest=/tmp/build-cache,mode=max + target: build + + - name: Final stage and push by digest + id: final + uses: docker/build-push-action@v6 + with: + context: . + platforms: ${{ matrix.platform }} + provenance: false labels: ${{ steps.meta.outputs.labels }} outputs: type=image,name=ghcr.io/${{ github.repository }},push-by-digest=true,name-canonical=true,push=${{ github.event_name != 'pull_request' && 'true' || 'false' }} + cache-from: type=local,src=/tmp/build-cache - name: Export digest if: ${{ github.event_name != 'pull_request' }} run: | mkdir -p /tmp/digests - digest="${{ steps.build.outputs.digest }}" + digest="${{ steps.final.outputs.digest }}" touch "/tmp/digests/${digest#sha256:}" - name: Upload digest @@ -65,6 +94,11 @@ jobs: if-no-files-found: error retention-days: 1 + - name: Move and list wheels + run: | + mv -f /tmp/build-output/root/.cache/pip/wheels ${{ github.workspace }}/ || true + ls -lR ${{ github.workspace }}/wheels || true + merge: name: Publish multi-platform image if: ${{ github.event_name != 'pull_request' }} @@ -88,7 +122,7 @@ jobs: uses: docker/setup-buildx-action@v2 - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} diff --git a/Dockerfile b/Dockerfile index e11c9e2..dbbf3c4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,6 +24,12 @@ RUN apt-get update && \ python3-wheel && \ rm -rf /var/lib/apt/lists/* +# Copy in existing wheels. +COPY wheel[s]/ /root/.cache/pip/wheels/ + +# No wheels might exist. +RUN mkdir -p /root/.cache/pip/wheels/ + # Copy in requirements.txt. COPY auto_rx/requirements.txt \ /root/radiosonde_auto_rx/auto_rx/requirements.txt From b31045f0e3baa5663cc4b7f52a680b3b34b2dfc2 Mon Sep 17 00:00:00 2001 From: Steven Honson Date: Thu, 12 Sep 2024 02:23:39 +1000 Subject: [PATCH 2/2] Build for master too --- .github/workflows/container.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/container.yml b/.github/workflows/container.yml index a7f512f..a9d5f70 100644 --- a/.github/workflows/container.yml +++ b/.github/workflows/container.yml @@ -3,6 +3,7 @@ name: Container image on: push: branches: + - 'master' - 'testing' tags: - 'v*'