# Deploy your App
In order to promote new updates of your software, you need to notify the app-store of new versions. This is done with the App-Store API.
# App-Store API
You can either build your own client using the App-Store Versioning API.
Or you can use our client to deploy.
# What you need
In our example app, we will publish a docker image version info for two channels.
You are going to need:
- Release notes automatically generated by your CI/CD server
- An App created in the App-Store with a dockerImage name (e.g. sicon/view)
- A registry to push your images to
- A docker tag defined
TIP
You need your own mechanism to generate release notes, in order to push them to the app-store. For our Sicon applications, we use semantic-release (opens new window). This creates release notes automatically based on the git commits. If you are not happy with the release notes or want to create them manually, you can still change them later via API.
# 1. Login with your credentials
The Deploy Client automatically logs in with your credentials using the environment variables:
APPSTORE_LOGIN_USERNAME
APPSTORE_LOGIN_PASSWORD
If you use the API use this endpoint:
POST
https://app-store-api.exa.sicon.io/auth/login
With the payload
{
"identifier": "sicon",
"password": "letThisBeOurSecret"
}
# 2. Retrieve the ID of the target channel
You can use your app channels maturity level (in our example it is stable) to query for a channel ID.
In the Deploy Client, the environment variable APPSTORE_DOCKERIMAGE
and APPSTORE_MATURITY
is used to determine app and maturity.
With the Rest API:
GET
https://app-store-api.exa.sicon.io/apps/1
Or if you don't know the id of your app, you can search:
GET
https://app-store-api.exa.sicon.io/apps?dockerImage=sicon/cockpit&author.username=sicon
You need to manually search through the channels
array to find the right id.
Or via GraphQL:
{
apps(where:{ dockerImage: "sicon/cockpit", author: { username: "sicon" } }) {
id
channels(where: { maturity: "stable" }) {
id
maturity
}
}
}
# 3. Publish a new version
POST
https://app-store-api.exa.sicon.io/versions
{
"name": "v1.4.1",
"dockerTag": "master",
"changelog": "## Features\n* New Rest API Call for managing device parameters",
"channel": 1,
}
The API will automatically add timestamps created_at
and updated_at
to your version, which can be used in e.g. changelogs.
With that, you are done. You can now update your version in the future with a PUT
command and the ID.