-
Notifications
You must be signed in to change notification settings - Fork 582
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merge Docker manifests from different runners #1287
Comments
Can you create a bug report with workflow and logs so we can take a look?
Yes this has been raised in #671 as well. We also want to ease distributed builds by using subactions for both build-push-action and bake-action.
Can you explain how this
This will not avoid QEMU on GitHub hosted runners, it will just build on a dedicated runner. |
I ran into a similar issue now that the arm64 linux runners ( Using workflow.ymljobs:
build:
strategy:
matrix:
config:
- {arch: 'arm64'}
- {arch: 'amd64'}
runs-on: ${{ matrix.config.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }}
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Checkout code
uses: actions/checkout@v4
- name: Build and Push Docker images for all Container Registries
uses: docker/build-push-action@v6
with:
tags: |
ghcr.io/${{ github.repository }}/build:latest-${{matrix.config.arch}}
file: Dockerfile
push: true
merge-docker-manifest:
runs-on: ubuntu-latest
needs: build
steps:
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create and push manifest images
uses: Noelware/docker-manifest-action@master # or use a pinned version in the Releases tab
with:
inputs: ghcr.io/${{ github.repository }}/build:latest
images: ghcr.io/${{ github.repository }}/build:latest-amd64,ghcr.io/${{ github.repository }}/build:latest-arm64
push: true |
I guess you meant
Your workflow creates multiple tags with architecture suffix which is not the desired behavior. In our case https://docs.docker.com/build/ci/github-actions/multi-platform/#distribute-build-across-multiple-runners we are pushing by digest to avoid that. Don't think |
I don't think that's the case, but that the arguments are very unclearly named. As I understand it, the architecture suffix tags are the inputs that get merged into one final manifest without a specific arch suffix. |
Yes, typo!
Yeah, I would like to avoid having the extra tags, but right now I can live with that. |
Description
I've followed the steps here - https://docs.docker.com/build/ci/github-actions/multi-platform/
but I've been unable to get it to work for a custom registry. Its also extremely difficult to both understand and debug
adding an option in this action such as
'merge-manifests' that replaces all of that code would make this far simpler. With more runners allowing for ARM builds, this would let people avoid QEMU emulation and parallelize their build configurations far more easily
The text was updated successfully, but these errors were encountered: