Skip to content

docker manifests should retry pushes #5853

@caarlos0

Description

@caarlos0

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.

Metadata

Metadata

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions