docs: gitea-release-workflow — asset downloads work via public host substitution
Confirmed on Gitea 1.27.1 (2026-08-12): browser_download_url in the API response points at an internal hostname (gitea.barky) but the file downloads correctly once you swap in the instance's public hostname. Verified end-to-end with a real binary asset (md5sum match) on a private repo accessed via token.
This commit is contained in:
@@ -21,6 +21,31 @@ Note: on at least one real self-hosted instance, `/releases/latest` 404s
|
|||||||
for unauthenticated requests even on a public repo — always send the
|
for unauthenticated requests even on a public repo — always send the
|
||||||
token, don't assume public-repo endpoints are auth-free.
|
token, don't assume public-repo endpoints are auth-free.
|
||||||
|
|
||||||
|
## Attaching a binary asset (e.g. a compiled build artifact) to a release
|
||||||
|
|
||||||
|
For releases that need to ship a real binary (a compiled `.app`, a zip, an
|
||||||
|
installer) rather than just source-tree metadata, upload it as a release
|
||||||
|
asset after creating the release:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -s -X POST -H "Authorization: token $TOKEN" \
|
||||||
|
-F "attachment=@/path/to/file.ext" \
|
||||||
|
"$HOST/api/v1/repos/$OWNER/$REPO/releases/$RELEASE_ID/assets"
|
||||||
|
```
|
||||||
|
|
||||||
|
The response includes `browser_download_url` — **on this instance
|
||||||
|
(confirmed on Gitea 1.27.1, 2026-08-12) it returns an internal address
|
||||||
|
(`http://gitea.barky/attachments/<uuid>`) even though the download itself
|
||||||
|
works fine once you substitute the public hostname**:
|
||||||
|
`https://devops.cloudhost.es/attachments/<uuid>`. This is a narrower,
|
||||||
|
now-fixed case of the ROOT_URL gotcha below — as of this instance's current
|
||||||
|
state, asset upload/download for **private repos accessed with a token**
|
||||||
|
works correctly end-to-end; only the URL string in the API response is
|
||||||
|
wrong. Don't assume this generalizes to every repo/instance — verify per
|
||||||
|
the "Verify a release actually works end-to-end" section, but know that
|
||||||
|
the fix here is a simple hostname swap, not the full archive-endpoint
|
||||||
|
workaround.
|
||||||
|
|
||||||
## KNOWN GOTCHA: release-asset downloads can be unreachable
|
## KNOWN GOTCHA: release-asset downloads can be unreachable
|
||||||
|
|
||||||
**Confirmed live on a real self-hosted Gitea instance**: uploading a zip
|
**Confirmed live on a real self-hosted Gitea instance**: uploading a zip
|
||||||
|
|||||||
Reference in New Issue
Block a user