diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml index de78d20..cadd17a 100644 --- a/.github/workflows/build-images.yml +++ b/.github/workflows/build-images.yml @@ -8,8 +8,6 @@ on: env: REGISTRY: ghcr.io - PROVER_IMAGE_NAME: ${{ github.repository }} - STREAMR_IMAGE_NAME: ${{ github.repository }}/streamr-client jobs: build-and-push-images: @@ -24,6 +22,24 @@ jobs: - name: Checkout repository uses: actions/checkout@v5 + - name: Normalize image names + run: | + echo "PROVER_IMAGE_NAME=${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV + echo "STREAMR_IMAGE_NAME=${GITHUB_REPOSITORY,,}/streamr-client" >> $GITHUB_ENV + + # Free up ~15-30 GB by removing unused pre-installed tools/packages + - name: Free disk space + uses: jlumbroso/free-disk-space@main + with: + tool-cache: true + android: true + dotnet: true + haskell: true + large-packages: true + docker-images: true + swap-storage: true + + # Multi-platform setup - name: Set up QEMU uses: docker/setup-qemu-action@v3 with: @@ -32,6 +48,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + # Login only on push - name: Log in to GitHub Container Registry if: github.event_name != 'pull_request' uses: docker/login-action@v3 @@ -40,7 +57,7 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - # Build and push Prover image (energy-tracker) + # Prover image (energy-tracker) - name: Extract metadata for Prover image id: meta-prover uses: docker/metadata-action@v5 @@ -48,6 +65,7 @@ jobs: images: ${{ env.REGISTRY }}/${{ env.PROVER_IMAGE_NAME }} - name: Build and push Prover image + id: docker_build_prover uses: docker/build-push-action@v6 with: context: . @@ -55,16 +73,18 @@ jobs: push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta-prover.outputs.tags }} labels: ${{ steps.meta-prover.outputs.labels }} + cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.PROVER_IMAGE_NAME }}:buildcache + cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.PROVER_IMAGE_NAME }}:buildcache,mode=max - name: Generate attestation for Prover image if: github.event_name != 'pull_request' uses: actions/attest-build-provenance@v3 with: subject-name: ${{ env.REGISTRY }}/${{ env.PROVER_IMAGE_NAME }} - subject-digest: ${{ steps.build-and-push-prover.outputs.digest }} + subject-digest: ${{ steps.docker_build_prover.outputs.digest }} push-to-registry: true - # Build and push Streamr client image + # Streamr client image - name: Extract metadata for Streamr client image id: meta-streamr uses: docker/metadata-action@v5 @@ -72,6 +92,7 @@ jobs: images: ${{ env.REGISTRY }}/${{ env.STREAMR_IMAGE_NAME }} - name: Build and push Streamr client image + id: docker_build_streamr uses: docker/build-push-action@v6 with: context: ./streamr-client @@ -79,11 +100,13 @@ jobs: push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta-streamr.outputs.tags }} labels: ${{ steps.meta-streamr.outputs.labels }} + cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.STREAMR_IMAGE_NAME }}:buildcache + cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.STREAMR_IMAGE_NAME }}:buildcache,mode=max - name: Generate attestation for Streamr client image if: github.event_name != 'pull_request' uses: actions/attest-build-provenance@v3 with: subject-name: ${{ env.REGISTRY }}/${{ env.STREAMR_IMAGE_NAME }} - subject-digest: ${{ steps.build-and-push-streamr.outputs.digest }} - push-to-registry: true + subject-digest: ${{ steps.docker_build_streamr.outputs.digest }} + push-to-registry: true \ No newline at end of file