Skip to main content
Documentation

Publish Software Artifacts

Upload a file to a Nexigon repository, attach it to a package version, and make that version available through a tag. This guide demonstrates the repository workflow with one file. Updaters can require additional filenames and metadata; use their release tooling when publishing deployable software.

For Rugix system images, follow the Rugix release workflow. It publishes the system-specific bundle filename and image-version metadata required by the OTA integration.

For a release with several files or a scripted workflow, follow Publish a Package Version in the Nexigon CLI docs.

Before You Start

You need:

  • Nexigon CLI configured with a token authorized to manage repository assets, packages, and versions. The commands below assume it is on your PATH.
  • A repository with working S3 storage.
  • A file to publish, such as firmware.rugixb.

This example uses a repository named my-repo and a package named controller. Replace both with your own names. See Repositories for the resource model.

Upload the File

nexigon-cli repositories assets upload my-repo firmware.rugixb

Copy the returned asset ID. Uploading stores the file, but does not yet attach it to a release.

Create a Package Version

Create the package once, or use an existing one:

nexigon-cli repositories packages create my-repo controller

Create a version and copy its returned version ID. Its display name describes the release; it does not create a tag:

nexigon-cli repositories versions create my-repo/controller --name "Release 2.0.0"

Keep the version untagged while attaching its files. This lets you inspect the contents before consumers resolve the release through a tag.

Attach the File and Tag the Version

Use the IDs returned above:

nexigon-cli repositories versions assets add <version-id> <asset-id> firmware.rugixb

The attachment gives the stored asset a filename within the version. Uploading and attaching are separate operations, so the same stored content can be reused in more than one release. Inspect the version and confirm its filename and metadata before adding the release tag:

nexigon-cli repositories versions info <version-id>

Publish a locked release tag:

nexigon-cli repositories versions tag <version-id> --tag v2.0.0,locked

The tag makes the version resolvable at my-repo/controller/v2.0.0. Locking keeps this release name assigned to the same version. It does not protect the version’s contents; sealing provides that protection after the release is complete.

Resolve the tag and request a download URL:

nexigon-cli repositories versions info my-repo/controller/v2.0.0
nexigon-cli repositories issue-url my-repo/controller/v2.0.0/firmware.rugixb

The second command returns a JSON object with a url field. This is a temporary storage URL authorizing a download. Keep the asset path as the durable reference and request a fresh URL when needed. Copy the returned URL and download the file:

curl --fail --location '<download-url>' --output downloaded-firmware.rugixb

Compare the downloaded file with the original to verify the publication.

Promote an Update Channel

To make devices tracking stable resolve this version, assign or reassign the floating tag:

nexigon-cli repositories versions tag <version-id> --tag stable,reassign

The floating stable tag can move between versions as you promote releases. Devices tracking that channel resolve the selected release on their next check. You can promote the same uploaded version through testing and production channels without uploading its bytes again.

For device deployment, continue with Deploy System Updates or Application Workloads. Complete and verify a release’s contents before sealing it to prevent later edits or deletion.