Budibase/budibase · error · Error
Github latest release url not found
Error message
Github latest release url not found
What it means
The latest GitHub release must contain a downloadable asset whose content_type is application/gzip; its browser_download_url is used as the plugin tarball. If no such asset exists, the release cannot be downloaded and this error is thrown.
Source
Thrown at packages/server/src/api/controllers/plugin/github.ts:77
const pluginLatestReleaseUrl = pluginDetails?.["releases_url"]
? pluginDetails?.["releases_url"].replace("{/id}", "/latest")
: undefined
if (!pluginLatestReleaseUrl) {
throw new Error("Github release not found")
}
const pluginReleaseDetails = await request(
pluginLatestReleaseUrl,
headers,
"Github latest release not found"
)
const pluginReleaseTarballAsset = pluginReleaseDetails?.assets?.find(
(x: any) => x?.["content_type"] === "application/gzip"
)
const pluginLastReleaseTarballUrl =
pluginReleaseTarballAsset?.["browser_download_url"]
if (!pluginLastReleaseTarballUrl) {
throw new Error("Github latest release url not found")
}
try {
path = await downloadUnzipTarball(
pluginLastReleaseTarballUrl,
pluginName,
headers
)
return await getPluginMetadata(path)
} catch (err: any) {
if (path) {
deleteFolderFileSystem(path)
}
let errMsg = err?.message || err
if (errMsg === "unexpected response Not Found") {
errMsg = "Github release tarball not found"
}
throw new Error(errMsg)View on GitHub (pinned to a81a902e9a)
Solutions
- Ask the plugin maintainer to attach a .tar.gz (application/gzip) asset to the latest release
- Publish a new release including a tar.gz build artifact
- Check the release assets at https://github.com/owner/repo/releases/latest and confirm a gzip asset is present
- Point at an older release/tag that does include a tar.gz if the flow allows
Defensive patterns
Strategy: validation
Validate before calling
const rel = await fetch(`https://api.github.com/repos/${owner}/${repo}/releases/latest`).then(r => r.json())
const hasGzip = (rel.assets || []).some(a => a.content_type === 'application/gzip')
if (!hasGzip) throw new Error('Latest release has no tar.gz asset') Type guard
function hasGzipAsset(release: { assets?: Array<{ content_type?: string }> }): boolean {
return (release.assets ?? []).some(a => a.content_type === 'application/gzip')
} Try / catch
try {
await installPlugin({ source: 'GITHUB', url })
} catch (err) {
if (err.message === 'Github latest release url not found') {
console.error('Ask the maintainer to attach a .tar.gz asset to the latest release')
}
} Prevention
- As a plugin author, always attach a .tar.gz build artifact to every release
- Remember GitHub source archives report application/zip and do not count
- Check the release assets page before attempting installation
When it happens
Trigger: The repo's latest GitHub release has no .tar.gz asset (only source zip / wrong content_type), or the release has zero assets.
Common situations: Plugin repo publishes releases via GitHub auto-generated source archives only (GitHub source zips get application/zip content_type); CI uploaded a zip instead of tar.gz; repo has a tag but no packaged release.
Related errors
- No skeleton found in latest release.
- Github release not found
- Unknown plugin type - check schema.json: ${schema.type}
- Please run in a plugin directory - must contain package.json
- Please run in a plugin directory - must contain schema.json
AI-assisted analysis of Budibase/budibase@a81a902e9a (2026-08-29).
Data as JSON: /api/errors/8262d9c686d8fea1.
Report an issue: GitHub.