Publishing Extensions

Extensions are published to the registry to be used by downstream apps and extensions.

Kit documentation: Publishing covers how to do it manually with the command line or UI. However, we suggest to automate that process in CI.

Extensions are published using the repo publish_exts tool that comes with Kit. The [repo_publish_exts] section of repo.toml lists which extensions to publish. E.g.:

[repo_publish_exts]
# Extensions to publish, include and exclude among those discovered by kit. Wildcards are supported.
exts.include = [
    "omni.foo.bar",
]
exts.exclude = []

Typically, CI scripts are setup to run repo publish_exts -c release (and debug) on every green commit to master, after builds and tests pass. That publishes any new extension version. For versions that were already published, nothing happens. So the version number needs to be incremented for publishing to have any effect.

You can test publishing locally with repo publish_exts -c release -n, where -n enables a “dry” run.

It is important to remember that some extensions (typically C++, native) have a separate package per platform, so we need to run publishing separately on each platform and publish for each configuration (debug and release). This is especially important in order to satisfy all required dependencies for downstream consumers.

Package Verification

Kit has a builtin package verification system before publishing. It checks basic things like the extension icon being present, that the changelog is correct, that a name and description field are present, etc. Those checks are recommended, but not required. You can control them with a setting for publish_exts:

[repo_publish_exts]
publish_verification = false

Other Publish Tool Settings

As with any repo tool, to find other available settings for the publish tool, look into its repo_tools.toml file. Since it comes with Kit, this file is a part of the kit-sdk package and can be found at: _build/$platform/$config/kit/dev/repo_tools.toml