-
-
Notifications
You must be signed in to change notification settings - Fork 1k
Description
FWIW we already do it with image pushes, need to do the same for manifests.
Discussed in https://github.com/orgs/goreleaser/discussions/5852
Originally posted by jsirianni June 24, 2025
Sometimes pushes to dockerhub can fail intermittently, likely a brief issue with Dockerhub. Retrying the release usually works.
docker manifests: failed to publish artifacts: failed to push redacted/redacted:latest:
exit status 1: failed to mount blob redacted/redacted-amd64@sha256:631a09d22084b181ee5e32f354a3e6521b37ad879cb3210f8c44183adc4259f0
to docker.io/redacted/redacted:latest:
error parsing HTTP 403 response body: unexpected end of JSON input: ""
Ideally Goreleaser would support the ability to retry pushing docker images, with some sort of backoff configuration. Something we can opt into. e.g.
dockers:
- id: alpine-amd64
goos: linux
retry:
max: 5
initial_interval: 10s
max_interval: 5m
This would save time when releasing complicated software. We have a build that takes ~45 minutes to assemble. If the push to dockerhub fails, we need to retry the entire build.
Specifically I would like this for dockers
and docker_manifests
. Would be welcome to support retry elsewhere.
Alternatives
Alternatively, we would disable Goreleaser's push to dockerhub, and perform it with a script when dockerhub is finished. This is not ideal but could work.