Add public app
Last updated
Was this helpful?
Last updated
Was this helpful?
Supervisely supports both private and public apps.
🔒 Private apps are those that are available only on your private Supervisely Instance (Enterprise Edition) in your account. The guidelines for adding public apps is .
🌎 Public apps are available on all private Supervisely Instances and in Community Edition.
This tutorial covers the case of adding a public app. It means that this app is open-sourced and is available on all Supervisely instances (Community Edition and all private customer's instances with Enterprise Edition license).
There are two types of releases: version
and branch
. The version
release is made from the main
or master
branch. With each version
release, a release tag is added to the last commit. This tag is used to identify the release version and is important for the app versioning. If during the release process, the tag is not created, the release will be rejected. With version releases, you can specify the release version and description. The branch
releases are for testing and debugging and are made from any other branch except main
or master
. With branch releases, you can't specify the release version and description. The release version will be the branch name.
In Supervisely you can have a single git repository with multiple applications. It is advised to have connected applications with a common codebase in the same repository. By default supervisely release
command will release the application from the root directory of the repository. If you have multiple applications in the repository, you can specify the path to the application directory with the -a
flag. The application directory is a directory with a config.json
file. Such applications are called subapps
. For example, if you have a repository with two applications in the train
and serve
directories, you can release the train
application with the following command:
Create an app repository on GitHub in a . *
In each of this files, you should change the following variable: SUBAPP_PATHS
- Paths to directories with applications within the repository (directory where the config.json
file is located). If the application is located in a root directory, then you should specify __ROOT_APP__
instead of the path. Paths should be separated by commas.
In the example above, releases are configured for two applications in the repository: the one which is located in root
directory and the one which is located in the subapp
directory. Example for the repository with two applications, located in train
and serve
directories: SUBAPP_PATHS: "train, serve"
.
Workflow files to release the app as private and as public are the same. To make your private app public you need to run Publish to production
workflow.
This workflow will create a public release for all the GitHub releases in the repository. Only releases with valid version names (in semver format) will be published.
To run the workflow you need to go to the Actions
tab of the repository and select the Publish app to production
workflow. Then click on the Run workflow
button. Do not change the Target of the release. It should always be main
or master
.
After the app is published to the production you will no longer be able to create releases via CLI tool and you will need to create releases via GitHub interface. How to do it is described below in steps 3.2 and 3.3.
The workflow we created in the previous step will be triggered when you publish a release in the repository.
To create a release, go to the repository page on GitHub and click on the Releases
tab. Then click on the Create a new release
or Draft a new release
button. Choose a tag version in semver format (v1.0.0) and a release title. Then click on the Publish release
button.
Do not change the Target of the release. It should always be main
or master
.
The workflow we created in the previous step will be triggered when you push a branch (except "main" or "master") in the repository.
Actions
tab. If the workflow is successful, the app will appear in the ecosystem.The developer creates the application and tests it locally.
Still in development
You may be asking yourself: "How can I develop new features for my app if I can't create releases via CLI tool?". There is a solution for that. Future feature development and testing are done in development branches (any branch other than main
or master
).
This workflow will be triggered on any push to any branch other than main
or master
. It will create a release with the name of the branch. For example, if you push to the dev
branch, the release will be created with the version dev
and the name dev branch release
.
Developers can submit their apps for review to Supervisely by following these steps:
Develop your app in a public repository on GitHub.
Perform local testing to ensure your app works as expected.
Once your app is ready, email the repository link to support@supervisely.com, requesting a review for public release. Include the following details:
Repository URL
Brief description of your app
Any special requirements or instructions for testing
The Supervisely Team will fork your repository, review your code, and test the app. If the app meets the quality and security standards, the team will publish it as a public app in the Supervisely Ecosystem. If there are issues, you will receive a detailed list of improvements required.
Once the app is published, it will be accessible to all Supervisely users. The app remains maintained by the original developer (through the forked repository), but future changes will be subject to Supervisely's review before release.
Add a GitHub workflow files from :
To publish the app to the production (see step 3):
For version releases (see step 4.1):
For branch releases (see step 4.2):
When you done with development and local tests, you can test your app on the development instance. To do so you need to create a private app on the development instance and then create a new release. *.
The preferred way is to use CLI tool from the SDK. From the environment where you have installed the SDK, run the following command: supervisely release
and follow the instructions. Make sure you set the correct server address and API token. After the release is created, you can find the application in the .
When you are ready to publish your app to the public, you need to create a public app. To do so you need to follow the steps described in the of this tutorial. After the app is published to the public you will no longer be able to create releases via CLI tool.
Do not forget to add the app to the . It is needed for back-compatibility with older versions of Supervisley instances. To check that the app is released on older instances ask the administrator.
To activate this mechanism you need to add another workflow file to the repository: You can use .
Same as in you need to change the SUBAPP_PATHS
variable.
When you need to update the app, you need to create a new release. It is described in of this tutorial.