> For the complete documentation index, see [llms.txt](https://docs.duku.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.duku.ai/viewport-dashboard/releases.md).

# Releases

See what each environment is serving and how each release tested.

When Releases are enabled for your organisation, Duku records each build as a release on the environment it was deployed to, and every exploration and test result is tied to the release it ran on. Contact Duku to enable Releases.

### What changes in the app

The tabs become **Overview**, **Issues**, **Releases**, **Exploration**, **Tests** (Beta) and **Schedules**. **Runs** and the target menu are hidden. On the Exploration and Tests pages the run buttons carry an **on {environment}** picker, so you choose which environment a run goes to.

### Record your first release

{% stepper %}
{% step %}

### 1. Set up your environments

An environment is a name and URL that your product is deployed to, such as `production` or `staging`. New products start with a `production` environment. An org admin opens **Product settings** (the cog next to the product menu) and scrolls to **Environments**

<figure><img src="https://1135428273-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2rbi6bEnpVLUQHudgXDV%2Fuploads%2F4VZLy1APs3vcu7xPY6aW%2F01-environments-settings.png?alt=media&amp;token=6ee806dd-9706-415a-a487-529db9c941f4" alt=""><figcaption></figcaption></figure>

Each environment has **Credentials**, to choose the credential set runs on it log in with, and **Set default**, to make it the environment runs and schedules use when you don't pick one.
{% endstep %}

{% step %}

### 2. Add an environment

Select **Add environment**, enter a name and the URL it serves, and select **Create**.

<figure><img src="https://1135428273-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2rbi6bEnpVLUQHudgXDV%2Fuploads%2FhEZDPf787UPVFU6q6VqC%2F02-add-environment.png?alt=media&amp;token=9a51743d-a0fc-46cf-8cf7-9d0f5e6b2e77" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### 3. Record a release

Select **Record release** on the Overview or Releases page. In **Record a release**, choose the environment, enter the version (for example `1.2.2`), and select **Record & explore**. Duku records the release and starts exploring it. Recording the same release on the same environment twice records one release, and the exploration always runs against whatever that environment currently serves.

<figure><img src="https://1135428273-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2rbi6bEnpVLUQHudgXDV%2Fuploads%2FE6EOkAR6VJfNz0aJZllx%2F03-record-release-dialog.png?alt=media&amp;token=487627b4-8798-4762-8a67-628219c6d13e" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
From CI, you don't need to record releases by hand. The environment action records one on every deploy - see [Keeping Duku in step with your releases](/integrations/github-actions/quickstart-environment-action.md). From any other CI, see [Record a release after each deploy](/integrations/triggering-explorations-from-any-ci.md).
{% endhint %}
{% endstep %}
{% endstepper %}

### The Releases page

**Live now** shows the release each environment is serving, with a shortcut to its tests. **Release history** lists every release **By environment**, with a **Live** marker on the one each environment serves now.

<figure><img src="https://1135428273-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2rbi6bEnpVLUQHudgXDV%2Fuploads%2FIaG6F9RL8OfLOQ6W1LZQ%2F04-releases-page.png?alt=media&amp;token=589702fe-9bd9-428a-8021-9acb2ebd3131" alt=""><figcaption></figcaption></figure>

Switch to **By lineage** to group releases by the branch they were built from.

<figure><img src="https://1135428273-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2rbi6bEnpVLUQHudgXDV%2Fuploads%2FtseOPluz0opiOErgKK6T%2F05-release-history-by-lineage.png?alt=media&amp;token=a9847345-11a5-4c87-a58c-38ceac6807e0" alt=""><figcaption></figcaption></figure>

### Release detail

Open a release to see the release it was built on, where it is live, and the pull request it was explored on.

<figure><img src="https://1135428273-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2rbi6bEnpVLUQHudgXDV%2Fuploads%2FTpDRVojvvbfc9F0YatB9%2F06-release-detail.png?alt=media&amp;token=0621dab4-7833-4440-89f7-5584c4e06198" alt=""><figcaption></figcaption></figure>

Below that, **Environments** lists every environment the release was deployed to - **Live** where it is serving now, **Redeployed** when the same release was deployed there again, and **Superseded** where a newer release has replaced it - followed by its **Test results** and **Exploration runs**.

<figure><img src="https://1135428273-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2rbi6bEnpVLUQHudgXDV%2Fuploads%2FXFlQ8x4tCWFSq2ZMviKb%2F07-release-test-and-exploration-runs.png?alt=media&amp;token=4c4c57e6-4854-437b-9f12-cb81bc604964" alt=""><figcaption></figcaption></figure>

### Rename a release

Org admins can select **Rename release** on the release detail page, edit the name in place and select **Save**. Only the name changes - the commit stays the same.

<figure><img src="https://1135428273-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2rbi6bEnpVLUQHudgXDV%2Fuploads%2FhBpd1pZF1BbP3Pf4onaY%2F08-rename-release.png?alt=media&amp;token=64621e16-a1ce-4ca6-a282-f7672e9cb1c4" alt=""><figcaption></figcaption></figure>

### Run tests on an environment

On the Tests page, **Run on {environment}** replays your tests on the environment you pick. The Exploration page has the same picker for explorations.

<figure><img src="https://1135428273-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2rbi6bEnpVLUQHudgXDV%2Fuploads%2FVAXJrpVP1HmlUe2kNS2q%2F09-run-tests-environment-picker.png?alt=media&amp;token=7fab735e-e927-4524-afad-fe2c8d1a7ada" alt=""><figcaption></figcaption></figure>
