Summary
Allow specifying one or more local files (or glob patterns) to be uploaded as assets to the GitHub Release created by the provider.
Motivation
A typical release pipeline builds binaries, archives, checksums, or SBOMs and wants to attach them to the GitHub Release. Currently this requires a separate gh release upload step; first-class support in the provider plugin would simplify configuration significantly.
Proposed configuration
plugins:
- name: provider-github
path: ~/.semrel/plugins/semrel-plugin-provider-github
env:
SEMREL_PLUGIN_TOKEN: "${GITHUB_TOKEN}"
SEMREL_PLUGIN_ASSETS: "dist/*.tar.gz,dist/checksums.txt,dist/*.sbom.json"
SEMREL_PLUGIN_ASSETS is a comma-separated list of file paths or glob patterns relative to the working directory.
Behaviour
- Each matched file is uploaded as a release asset using the GitHub Releases API
- If a glob matches zero files, the plugin logs a warning but does not fail
- Content-Type is inferred from the file extension; falls back to
application/octet-stream
- Upload errors (e.g. duplicate asset name) surface as a plugin failure
Acceptance criteria
Summary
Allow specifying one or more local files (or glob patterns) to be uploaded as assets to the GitHub Release created by the provider.
Motivation
A typical release pipeline builds binaries, archives, checksums, or SBOMs and wants to attach them to the GitHub Release. Currently this requires a separate
gh release uploadstep; first-class support in the provider plugin would simplify configuration significantly.Proposed configuration
SEMREL_PLUGIN_ASSETSis a comma-separated list of file paths or glob patterns relative to the working directory.Behaviour
application/octet-streamAcceptance criteria
SEMREL_PLUGIN_ASSETSaccepted (comma-separated globs).tar.gz,.zip,.json,.txt,.sig)