tools/asf-nexus/
Capability: contract:release-staging
Kind: implementation
Vendor: Nexus Repository Manager (ASF-hosted)
Organization: ASF
Read-only adapter for the Nexus staging repository — the half of an
ASF JVM release that dist.apache.org does not model. A JVM release
candidate is voted on in two places at once: the dist/ tree carries
the voted source artefact (the tools/asf-svn side), and
the jars downstream consumers actually resolve come from a staging
repository at repository.apache.org that is later promoted to Maven
Central. This adapter implements check 4 of
apache/magpie#1173:
verify that the staged repo is closed (not open), that its
coordinates and version match the RC under vote, and that every
artefact in it carries its .asc signature and checksums with a
complete companion set.
See tool.md for the capability surface and the read-only
guarantee, operations.md for the endpoint contract
(which paths are anonymous, which need credentials, and the exact
recipes), and staging-verification.md for
the classification rules the calling skill applies to the probe
output.
Prerequisites
- Runtime: Bash / coreutils — this is a doc-only adapter; skills
invoke
curl(andjqwhere noted) per the recipes inoperations.md. No Python, no other runtime. - CLIs:
curl,jq(optional — only the authenticated recipes parse JSON with it; the anonymous recipes only needcurlandgrep). - Credentials / auth: none for the anonymous read paths
(
/content/repositories/<staging-repo>/). The authenticated staging-API reads (/service/local/staging/...) need ASF Nexus credentials; store them as a netrc-format file at~/.config/apache-magpie/asf-nexus/netrc(chmod 600) and read them withcurl --netrc-file, so the secret never appears in argv — never a-u user:passon the command line, and never in the project tree.~/.config/is denied to the sandboxed agent by design, so the authenticated recipes are for the RM’s own terminal; a voter (or the sandboxed agent itself) runs the anonymous path and reportsSTATE-UNVERIFIEDinstead of failing anything. - Network:
repository.apache.org— read-onlyGETs only. The adapter never closes, drops, or promotes a staging repository, and never performs a write request of any kind.
Configuration
release-verify-rc Step 6c sources the staging repository id from
release-build.md § JVM artefact checks → nexus_staging_repo (a
repository id such as orgapachefoo-1024, or the full
content/repositories/<id> URL), falling back to the planning issue
body when the RM passed --post-to. Non-ASF adopters leave the key
unset and the step skips cleanly — repository.apache.org is ASF
infrastructure and there is nothing for them to probe.
The adopter-facing configuration block is declared in
projects/_template/release-build.md.