Publish a Package Version
Publish a release with multiple files using Nexigon CLI. You will create a package version, upload its assets, attach them under their download filenames, and add a release tag after checking the contents.
A repository stores files as assets. A package groups related releases, and a package version attaches the files for one release. See Repositories for the resource model.
Before You Start
You need Nexigon CLI installed and configured, a repository with working S3 storage, and permission to manage its assets, packages, and versions.
This example publishes application-amd64.tar.gz and
application-arm64.tar.gz to my-repo/application. Replace those names
with your repository, package, and files.
Run the examples in the same Bash shell, from the directory containing the
files and the downloaded nexigon-cli binary. The examples use jq to
extract IDs from JSON responses.
For Rugix system images, use the Rugix release workflow. It supplies the image-version metadata and system-specific bundle filenames required by that update integration.
Create the Package
Create a package once:
./nexigon-cli repositories packages create my-repo application
If it already exists, use that package. Inspect it with:
./nexigon-cli repositories packages info my-repo/application
Create a Version
Create the version without a public release tag so consumers do not resolve it before its files are attached:
set -euo pipefail
version_json=$(./nexigon-cli repositories versions create my-repo/application \
--name "Release 2.0.0" \
--metadata '{"gitCommit": "abc1234"}')
version_id=$(printf '%s\n' "$version_json" | jq -er '.versionId')
printf 'Version ID: %s\n' "$version_id"
The response contains result: "Created" and versionId. The display name
does not create a tag. Use the returned ID for subsequent commands so they
continue to address this version even if a tag changes.
The optional --metadata argument accepts a JSON object. Use your release’s
actual metadata or omit it.
Upload and Attach the Assets
Upload each file, read its assetId, then attach it to the version:
for file in application-amd64.tar.gz application-arm64.tar.gz; do
asset_json=$(./nexigon-cli repositories assets upload my-repo "$file")
asset_id=$(printf '%s\n' "$asset_json" | jq -er '.assetId')
./nexigon-cli repositories versions assets add "$version_id" "$asset_id" "$file"
done
An upload response has result: "Created" or result: "AssetAlreadyExists";
both include assetId. Existing content can be reused within the repository.
Uploading stores the bytes. Attaching gives the asset a filename in this
version. The final argument to versions assets add is that download filename;
it must be unique within the version. Repeat the upload and attachment steps
for other files, such as release notes or a software bill of materials.
Check the Contents and Publish a Tag
Inspect the version and confirm that both filenames are present:
./nexigon-cli repositories versions info "$version_id"
Then add a locked release tag and resolve it back to the version:
./nexigon-cli repositories versions tag "$version_id" --tag v2.0.0,locked
./nexigon-cli repositories versions info my-repo/application/v2.0.0
The locked tag keeps v2.0.0 assigned to this version. Locking a tag does
not seal the version’s contents; see
Sealed Versions for content protection.
Verify a Download
Request a download URL for one of the attached files:
download_json=$(./nexigon-cli repositories issue-url \
my-repo/application/v2.0.0/application-arm64.tar.gz)
download_url=$(printf '%s\n' "$download_json" | jq -er '.url')
curl --fail --location "$download_url" --output downloaded-application-arm64.tar.gz
cmp application-arm64.tar.gz downloaded-application-arm64.tar.gz
A successful cmp produces no output and exits with status zero.
issue-url returns a temporary storage URL that authorizes the download.
Keep the repository asset path as the durable reference and request a new URL
when you need another download after the previous URL expires.
Promote a Channel or Resume a Publish
To move a floating channel tag to this version:
./nexigon-cli repositories versions tag "$version_id" --tag stable,reassign
A device or client following stable resolves the new version after this
command. A locked tag cannot be reassigned.
If publication stops before tagging, inspect the saved version ID and attach
any missing files before retrying the tag command. Running versions create
again creates another version.
For private device downloads, link the repository to the device’s project under Project Settings → Repositories. Continue with Application Workloads or Deploy System Updates for deployment.