# Automate GitLab 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 GitLab pipeline

To create a release pipeline follow this steps:

* Go to **Build/Pipeline Editor** tab
* Click **Configure Pipeline**
* Paste the following content:

```yaml
stages: 
  - deploy

deploy-job:      
  stage: deploy
  environment: production
  only: ["main"]
  script:
    - |
        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"
    - |
        curl https://UI_BAKERY_INSTANCE/api/instance/app/APP_ID/release \
        -X POST \
        -d '{"version":"1.0.1", "prod": true, "staging": false, "description": "Automated release"}' \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer TOKEN"
    - echo "Application successfully deployed."
```

* 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 pipeline will be executed on every push/merge into the "main" branch
