DockerHub login wrapped in retry logic
DockerHub authentication in CI pipelines now retries up to three times on transient failures, replacing a third-party action with a bash command that handles rate limits more gracefully.
Release pipelines running DockerHub authentication were occasionally failing mid-process due to rate limits or temporary network issues. Rather than relying on a third-party GitHub Action that offered no retry capability, the login step now uses a direct bash command wrapped in the existing retry logic. This approach mirrors how GHCR authentication already handles transient failures in the same workflow. The login attempts three times with a ten-second delay between each attempt before giving up — enough to ride out most hiccups without slowing down successful runs.
View Original GitHub Description
Summary
Replaces the third-party docker/login-action composite action step for DockerHub login with a direct docker login bash command, consistent with how the GHCR login step is already implemented in this action.
The new step wraps the login in retry.mjs (3 attempts, 10s delay) to handle transient DockerHub rate limits or network hiccups — the same retry pattern used for GHCR login.
Verification:
docker/login-actionwithout aregistry:input defaults todocker.io— identical todocker loginwith no registry argument- Both write credentials to
~/.docker/config.json; the action does not use credential helpers or any storage mechanism beyond the standard Docker CLI - Composite action steps share the runner environment with the calling workflow, so login sessions are equally visible to downstream steps
Related Linear tickets, Github issues, and Community forum posts
https://linear.app/n8n/issue/CAT-2808
Hopefully fixes flakiness present in e.g. the Release process https://github.com/n8n-io/n8n/actions/runs/24347179771/job/71091395195#step:6:59
Review / Merge checklist
- I have seen this code, I have run this code, and I take responsibility for this code.
- PR title and summary are descriptive. (conventions)
- Docs updated or follow-up ticket created.
- Tests included.
- PR Labeled with
Backport to Beta,Backport to Stable, orBackport to v1(if the PR is an urgent fix that needs to be backported)
🤖 PR Summary generated by AI