# Automate GitHub releases

## Step 1. Enable the Instance API

To enable the UI Bakery Instance API please follow this [guide](https://docs.uibakery.io/on-premise-features/instance-api#enabling-the-instance-api)

## Step 2. Create GitHub action

To create a release workflow follow this steps:

* Go to repository **Actions** tab
* Click **New workflow**
* Choose **set up a workflow yourself** and paste the following content

```yaml
name: Release Instance

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Pull main branch
        run: |
          curl https://UI_BAKERY_INSTANCE/api/instance/app/APP_ID/pull?uib_branch=main \
            -X POST \
            -H "Content-Type: application/json" \
            -H "Authorization: Bearer TOKEN"
      - name: Create release from main branch
        run: |
          curl https://UI_BAKERY_INSTANCE/api/instance/app/APP_ID/release \
            -X POST \
            -d '{"version":"1.0.1", "prod": true, "staging": true, "description": "Automated release"}' \
            -H "Content-Type: application/json" \
            -H "Authorization: Bearer TOKEN"
```

* Replace the `UI_BAKERY_INSTANCE` placeholder with your domain name.
* Replace `APP_ID` with your app ID (can be found in URL).
* Replace `TOKEN` with the value of your `UI_BAKERY_INSTANCE_API_TOKEN` variable

The workflow will be executed on every push/merge into the "main" branch
