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 (
release). This is especially important in order to satisfy all required dependencies for downstream consumers.
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
[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: