feat(hive-forge): add artifact-get verb to download CI run artifacts
Forgejo 15 has no REST endpoint to download an Actions artifact — the only path is the web UI download route, which is keyed by the run's global id rather than the per-repo run number shown in run-page URLs. The REST artifacts list route keys off the run number instead, so the two can't be chained directly. artifact-get takes the run number (what pr-status surfaces as a CI context target_url), translates it to the global run id via the REST runs list by matching each run's html_url tail, then GETs the web download route with the agent's forge token. Saves the artifact zip to a path (default /tmp/forge-artifact-<name>.zip) or streams to stdout with -o -. The artifact name is percent-encoded into the path. The encoder that list already used for query-string filters is promoted to a shared verbs::pct_encode helper so both call sites stay in sync. Lets an agent pull a CI-built artifact (e.g. a paper PDF) into /shared without host access.
This commit is contained in:
parent
801b886a4c
commit
6490fc422e
6 changed files with 184 additions and 41 deletions
|
|
@ -54,6 +54,7 @@ hive-forge timeline 42 # audit trail: closes, label changes
|
|||
hive-forge attach-issue 42 /path/to/file # upload a file attachment to an issue; prints download URL
|
||||
hive-forge attach-comment 18042 /path/to/file # upload a file attachment to a comment; prints download URL
|
||||
hive-forge attachment-get <uuid> # download an attachment; prints resolved path to stdout
|
||||
hive-forge artifact-get pr1ma-paper-pdf --run 51 # download a CI run's Actions artifact zip (run number from the run-page URL)
|
||||
hive-forge subscription --watch # subscribe to repo notifications
|
||||
hive-forge subscription --unwatch # unsubscribe
|
||||
hive-forge -r internal/knowledge clone # clone with creds auto-injected
|
||||
|
|
@ -127,5 +128,12 @@ plain comment show under `last comment`, not `reviews`.
|
|||
URL ourselves).
|
||||
- `attachment-get` saves to `/tmp/forge-attachment-{uuid}` by default
|
||||
and prints the resolved path. Pass `-o -` to stream to stdout.
|
||||
- `artifact-get <name> --run <n>` downloads a CI Actions artifact. `<n>`
|
||||
is the run number from the run-page URL (`/actions/runs/<n>`, which
|
||||
`pr-status` surfaces as a CI context's target_url). Forgejo 15 serves
|
||||
artifacts only via the web route, not REST, and that route is keyed by
|
||||
the run's internal global id, so the verb translates the run number
|
||||
first. Saves a zip to `/tmp/forge-artifact-<name>.zip` by default; pass
|
||||
`-o -` to stream to stdout.
|
||||
- Do NOT use raw `curl` for forge access -- the CLI handles auth,
|
||||
error checking, and output formatting.
|
||||
|
|
|
|||
Loading…
Reference in a new issue