neo release
Publish releases: a tag, its notes, and downloadable assets.
neo release create v1.2.0 dist/* creates the release as a draft, uploads every file as an asset, then publishes it, so readers never see a release with half its files. If an upload fails, the release stays a draft and the command prints the neo release upload and neo release publish lines that finish it. The tag must already exist in the repository; push it first.
Every verb finds its repository from --repo, else from a checkout remote pointing at this host, else from $NEOSOURCE_REPOSITORY. Every neosource CI job sets that variable, plus NEOSOURCE_API and NEOSOURCE_TOKEN (the job’s own token), and ships neo in its image, so publishing from a tag push is one workflow step: - run: neo release create "$GITHUB_REF_NAME" dist/*.
neo release [OPTIONS] <COMMAND>neo release create
Section titled “neo release create”Create a release, upload its assets, and publish it.
Three steps in one command: create the release as a draft, upload each file in order (named by its basename), then publish. Every file is checked before anything is sent: it must be a regular file of at most 2 GiB, its basename must be a valid asset name, and no two files may share one. If an upload fails, nothing after it is sent, the release stays a draft (invisible to readers), the command exits 1, and it prints the neo release upload and neo release publish lines that finish the job.
neo release create [OPTIONS] <TAG> [FILES]...| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
--repo, -R |
<OWNER/REPO> |
no | <owner>/<repo> or bare <repo>. Inferred from a checkout remote pointing at this host when omitted, else read from $NEOSOURCE_REPOSITORY, which every neosource CI job sets |
|||
<TAG> |
yes | The git tag to release. It must already exist in the repository and point at a commit | ||||
<FILES> |
no | Files to upload as assets, in order | ||||
--title |
<TITLE> |
no | Release title. Defaults to none; readers then see the tag | |||
--notes |
<NOTES> |
no | Release notes, as Markdown | |||
--notes-from |
<FILE> |
no | Read the release notes from a file, or from stdin with - |
|||
--draft |
no | Upload the assets but stop before publishing. Publish later with neo release publish |
||||
--prerelease |
no | Mark it a prerelease, so it never resolves as latest |
||||
--rolling |
no | Create the repository’s single rolling release: a moving pointer whose assets are replaced in place and which never resolves as latest. It is published at once (a rolling release cannot be a draft), then the assets are uploaded. Creating it again on the same tag is refused; refresh its assets with neo release upload instead |
||||
--json |
no | Print the release as JSON, with its assets |
neo release upload
Section titled “neo release upload”Upload assets to an existing release.
The same checks and the same stop-at-first-failure as create. A published release that is not rolling may refuse new assets; the server’s message says so.
neo release upload [OPTIONS] <TAG> <FILES>...| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
--repo, -R |
<OWNER/REPO> |
no | <owner>/<repo> or bare <repo>. Inferred from a checkout remote pointing at this host when omitted, else read from $NEOSOURCE_REPOSITORY, which every neosource CI job sets |
|||
<TAG> |
yes | The release’s tag | ||||
<FILES> |
yes | Files to upload, in order, each named by its basename | ||||
--json |
no | Print the uploaded assets as a JSON array |
neo release publish
Section titled “neo release publish”Publish a draft release
neo release publish [OPTIONS] <TAG>| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
--repo, -R |
<OWNER/REPO> |
no | <owner>/<repo> or bare <repo>. Inferred from a checkout remote pointing at this host when omitted, else read from $NEOSOURCE_REPOSITORY, which every neosource CI job sets |
|||
<TAG> |
yes | The draft’s tag | ||||
--json |
no | Print the published release as JSON |
neo release list
Section titled “neo release list”List releases, newest first.
Drafts are listed only when you can write to the repository.
neo release list [OPTIONS]| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
--repo, -R |
<OWNER/REPO> |
no | <owner>/<repo> or bare <repo>. Inferred from a checkout remote pointing at this host when omitted, else read from $NEOSOURCE_REPOSITORY, which every neosource CI job sets |
|||
--json |
no | Print the raw response as JSON |
neo release view
Section titled “neo release view”Show one release with its assets
neo release view [OPTIONS] <TAG>| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
--repo, -R |
<OWNER/REPO> |
no | <owner>/<repo> or bare <repo>. Inferred from a checkout remote pointing at this host when omitted, else read from $NEOSOURCE_REPOSITORY, which every neosource CI job sets |
|||
<TAG> |
yes | The release’s tag | ||||
--json |
no | Print the raw response as JSON |
neo release delete
Section titled “neo release delete”Delete a release and its assets.
The git tag is left alone. Needs a signed-in account with write access; a CI job token cannot delete releases. On a terminal it asks you to type the tag back; anywhere else it refuses and sends nothing unless --yes is given.
neo release delete [OPTIONS] <TAG>| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
--repo, -R |
<OWNER/REPO> |
no | <owner>/<repo> or bare <repo>. Inferred from a checkout remote pointing at this host when omitted, else read from $NEOSOURCE_REPOSITORY, which every neosource CI job sets |
|||
<TAG> |
yes | The release’s tag | ||||
--yes |
no | Delete without asking — required when stdin is not a terminal |