# 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.