Add a read-only Docker Hub auth check - #200
Closed
wu-sheng wants to merge 1 commit into
Closed
Conversation
The 5.0.0 chart push failed with 401 from auth.docker.io when asking for repository:apache/skywalking-helm:pull,push, and INFRA reports the configuration as correct. Those two statements cannot both be acted on without knowing what the CI credential actually gets back, and only a workflow run can ask that. Two baselines, measured from outside rather than assumed: anonymous http 200, granted=pull -- a REDUCED scope, not a refusal deliberately bad creds http 401 -- the signature CI saw That distinction matters and corrects an earlier reading of this failure. A 200 does not mean push was granted, so a client that failed to find its credential would have received a pull-only token and died later at the blob upload, not at this endpoint. CI failing here looks like credentials sent and rejected. So this asks for the same scope on the repository that fails and on one the same credential is known to push to -- apache/skywalking-oap-server, whose release publish succeeded on 2026-08-28 -- and prints the two answers side by side. Differing answers mean per-repository permission; identical 401s mean the token itself. Either way the next step stops being a guess. Nothing is published, pushed or written. There is no `set -x`, every curl discards its body, and the only things printed are an HTTP status and the token's "access" claim, which describes the repository's permissions rather than the identity. Dispatch-only, and meant to be deleted once the question is settled. The step's shell was extracted from the YAML and run to check it: it parses, the anonymous path works, the JWT "access" decode works, and stub credentials reproduce the 401.
Member
Author
|
Closing — the question this was built to answer has been answered. The swck repository hit the identical bug and tested it there: the credential is stored under the host you log in as, while So it is not per-repository permission on Docker Hub, and INFRA's "configured correctly" was right. No diagnostic needed. The fix — |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The 5.0.0 chart push fails with
401fromauth.docker.ioforrepository:apache/skywalking-helm:pull,push, and INFRA reports the configuration as correct. Both cannot be acted on without knowing what the CI credential itself gets back — and only a workflow run can ask that.Two baselines, measured from outside
200,granted=pull— a reduced scope, not a refusal401— the signature CI sawThis corrects an earlier reading of the failure I gave. I had taken "anonymous returns 200" to mean the 401 must be a permission refusal. It doesn't: a
200does not mean push was granted. A client that failed to find its credential would have received a pull-only token and died later at the blob upload — not at this endpoint. CI failing here has the signature of credentials sent and rejected.What it does
Asks for the same scope on the repository that fails and on one the same credential is known to push to —
apache/skywalking-oap-server, whose release publish succeeded 2026-08-28 — and prints the answers side by side:authrows401on helm,200 pull,pushon oap-server401on both200 pullonly200 pull,pushon helmpublish-helmwithtag: v5.0.0Either way the next step stops being a guess, and the output is something concrete to hand back to INFRA.
Safety
Publishes nothing, pushes nothing, writes nothing. No
set -x; everycurldiscards its body; the only things printed are an HTTP status and the token'saccessclaim, which describes the repository's permissions, not the identity. Dispatch-only.Meant to be deleted once the question is settled — that's stated at the top of the file.
Verified
Extracted the step's shell from the YAML and ran it: parses clean, the anonymous path works, the JWT
accessdecode works, and stub credentials reproduce the401.