Skip to content

Fix for ERROR: Cache export is not supported for the docker driver. #291

Fix for ERROR: Cache export is not supported for the docker driver.

Fix for ERROR: Cache export is not supported for the docker driver. #291

name: Docker
env:
REPO_NAME: ${{ github.event.repository.name }}
IMAGE_NAME: ${{ github.repository }}
on:
pull_request:
paths:
- ".github/workflows/docker-publish.yml"
- "image/**"
- "!README.md"
- "requirements-dev.txt"
push:
branches:
- main
tags: ["*"]
paths:
- ".github/workflows/docker-publish.yml"
- "image/**"
- "!README.md"
- "requirements-dev.txt"
jobs:
build-amd64:
runs-on: ubuntu-24.04
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Docker Hub
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Log in to the Container registry
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: |
${{ env.IMAGE_NAME }}
ghcr.io/${{ env.IMAGE_NAME }}
- name: Build and push Docker image (amd64)
id: build
uses: docker/build-push-action@v6
with:
context: image/
platforms: linux/amd64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha,scope=buildx
cache-to: type=gha,mode=max,scope=buildx
build-arm64:
runs-on: ubuntu-24.04-arm
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Docker Hub
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Log in to the Container registry
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: |
${{ env.IMAGE_NAME }}
ghcr.io/${{ env.IMAGE_NAME }}
- name: Build and push Docker image (arm64)
id: build
uses: docker/build-push-action@v6
with:
context: image/
platforms: linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha,scope=buildx
cache-to: type=gha,mode=max,scope=buildx
create-manifest:
runs-on: ubuntu-24.04
needs: [build-amd64, build-arm64]
permissions:
contents: read
packages: write
steps:
- name: Log in to Docker Hub
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Log in to the Container registry
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create and push multi-arch manifest
uses: docker/build-push-action@v6
with:
context: image/
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ env.IMAGE_NAME }}:latest
cache-from: type=gha,scope=buildx
cache-to: type=gha,mode=max,scope=buildx