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 automating 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 a “dry” run using -n
flag:
repo publish_exts -c release -n
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 to satisfy all required dependencies for downstream consumers.
Publish Verification#
The extension system verifies extensions 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 repo_publish_exts
:
[repo_publish_exts]
publish_verification = false
To only run the verification step, without publishing, use the --verify
flag:
repo publish_exts -c release --verify
It is recommended to run the verification step as part of build, to catch issues early.
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