> 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/integrations/github-actions/configuration-reference.md).

# Configuration reference

Use this reference when you need to tune URL resolution, read action outputs, or pin a specific release.

### `preview` inputs

| Name                                   | Required | Default                            | Description                                                                                                                                                                                                                                                                                   |
| -------------------------------------- | -------- | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `api-key`                              | Yes      | `-`                                | Platform API key. Generate in Viewport - **Settings → API Keys**.                                                                                                                                                                                                                             |
| `product-id`                           | Yes      | `-`                                | Duku product ID from Viewport - **Products**.                                                                                                                                                                                                                                                 |
| `api-url`                              | No       | `https://platform.duku.ai/graphql` | Platform API endpoint.                                                                                                                                                                                                                                                                        |
| `auth-url`                             | No       | *derived from api-url*             | Authentication server URL.                                                                                                                                                                                                                                                                    |
| `start-run`                            | No       | `true`                             | Start an exploration after creating the target. Required for the PR comment flow.                                                                                                                                                                                                             |
| `vercel-automation-bypass-secret`      | No       | *(empty)*                          | Bypass Vercel Deployment Protection on protected previews.                                                                                                                                                                                                                                    |
| `exploration-url`                      | No       | *product base URL*                 | Explore this URL instead of resolving one.                                                                                                                                                                                                                                                    |
| `preview-url-source`                   | No       | `auto`                             | How to resolve the preview URL on a PR: `auto`, `deployments`, `checks`, `statuses`, `comments`, or `none`.                                                                                                                                                                                   |
| `preview-timeout-seconds`              | No       | `60`                               | How long to wait for the preview URL to appear.                                                                                                                                                                                                                                               |
| `preview-poll-interval-seconds`        | No       | `5`                                | How often to poll for the preview URL.                                                                                                                                                                                                                                                        |
| `preview-deployment-environment-regex` | No       | *(empty)*                          | Regex matching the GitHub Deployment environment name. Defaults to a conservative `preview\|review\|staging\|pr`.                                                                                                                                                                             |
| `preview-check-name-regex`             | No       | *(empty)*                          | Regex matching a Check Run name. Skipped in `auto` if empty.                                                                                                                                                                                                                                  |
| `preview-status-context-regex`         | No       | *(empty)*                          | Regex matching a commit status context. Skipped in `auto` if empty.                                                                                                                                                                                                                           |
| `preview-comment-author-logins`        | No       | *(empty)*                          | Comma separated bot or user logins whose PR comments may carry the preview URL, for example `vercel[bot],netlify[bot]`.                                                                                                                                                                       |
| `preview-url-regex`                    | No       | *(empty)*                          | Regex to extract the preview URL from a provider comment.                                                                                                                                                                                                                                     |
| `github-installation-id`               | No       | `-`                                | Duku AI GitHub App installation ID. Normally auto discovered when the App is installed. Only set this for a custom installation map.                                                                                                                                                          |
| `repository`                           | No       | `-`                                | Repository in `owner/repo` format. Set this together with `pr-number` to attach PR metadata and post the sticky PR comment on non `pull_request` triggers.                                                                                                                                    |
| `pr-number`                            | No       | `-`                                | Pull request number. Set this together with `repository` to attach PR metadata and post the sticky PR comment on non `pull_request` triggers.                                                                                                                                                 |
| `github-token`                         | No       | *(empty)*                          | Token used to post the status PR comment (and, for preview, to resolve the preview URL). Defaults to empty; falls back to the `GITHUB_TOKEN` env var, which GitHub does not set automatically. Pass `${{ github.token }}` explicitly on `pull_request` runs. Requires `pull-requests: write`. |
| `dashboard-url`                        | No       | *(empty)*                          | Base URL of Viewport, used to build result links in the sticky comment.                                                                                                                                                                                                                       |

### `preview` outputs

| Name                   | Description                                                                                                    |
| ---------------------- | -------------------------------------------------------------------------------------------------------------- |
| `target-id`            | ID of the created target.                                                                                      |
| `target-name`          | Name of the created target.                                                                                    |
| `target-version`       | Version of the created target.                                                                                 |
| `run-id`               | ID of the started exploration. On PR events, this is the same value as `exploration-batch-id`.                 |
| `run-status`           | Kickoff status: `triggered`.                                                                                   |
| `exploration-batch-id` | ID of the exploration on PR events.                                                                            |
| `comment-id`           | Deprecated. Always empty on PR events. The status comment is now posted server-side by the Duku AI GitHub App. |

### `environment` inputs

| Name                     | Required | Default                            | Description                                                                                                                                                                                                                                                                                   |
| ------------------------ | -------- | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `api-key`                | Yes      | `-`                                | Platform API key. Generate in Viewport - **Settings → API Keys**.                                                                                                                                                                                                                             |
| `target-id`              | Yes      | `-`                                | Pre created environment target ID from Viewport.                                                                                                                                                                                                                                              |
| `url`                    | No       | *target build URL*                 | Override the URL to explore.                                                                                                                                                                                                                                                                  |
| `api-url`                | No       | `https://platform.duku.ai/graphql` | Platform API endpoint.                                                                                                                                                                                                                                                                        |
| `auth-url`               | No       | *derived from api-url*             | Authentication server URL.                                                                                                                                                                                                                                                                    |
| `github-installation-id` | No       | `-`                                | Duku AI GitHub App installation ID. Normally auto discovered.                                                                                                                                                                                                                                 |
| `repository`             | No       | `-`                                | Repository in `owner/repo` format. Set this together with `pr-number` to attach PR metadata and post the sticky PR comment on non `pull_request` triggers.                                                                                                                                    |
| `pr-number`              | No       | `-`                                | Pull request number. Set this together with `repository` to attach PR metadata and post the sticky PR comment on non `pull_request` triggers.                                                                                                                                                 |
| `github-token`           | No       | *(empty)*                          | Token used to post the status PR comment (and, for preview, to resolve the preview URL). Defaults to empty; falls back to the `GITHUB_TOKEN` env var, which GitHub does not set automatically. Pass `${{ github.token }}` explicitly on `pull_request` runs. Requires `pull-requests: write`. |
| `test-runs-per-path`     | No       | *platform default*                 | Override runs per path for the test-case run.                                                                                                                                                                                                                                                 |
| `test-paths-per-goal`    | No       | *platform default*                 | Override paths per goal for the test-case run.                                                                                                                                                                                                                                                |

### PR metadata on non `pull_request` triggers

Set `repository` and `pr-number` together when you run on `push`, `workflow_dispatch`, or `repository_dispatch` and still want the action to attach PR metadata and post the sticky PR comment.

This is useful when the PR or URL is only known later in the pipeline.

When you omit these inputs, behavior on a native `pull_request` event is unchanged.

### `environment` outputs

| Name              | Description                                                                                                                                               |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `run-id`          | ID of the exploration.                                                                                                                                    |
| `run-status`      | Kickoff status: `triggered` (running asynchronously - see Viewport for the final status).                                                                 |
| `test-run-id`     | ID of the test-case run. Empty if the target has no test cases configured.                                                                                |
| `test-run-status` | `triggered`, or `skipped` if the target has no test cases.                                                                                                |
| `comment-id`      | ID of the sticky PR comment. Set on a native `pull_request` event, or on other triggers when `repository`, `pr-number`, and a `github-token` are present. |

### Secrets and variables to configure

| Name                              | Kind     | Used by     | Description                                                                    |
| --------------------------------- | -------- | ----------- | ------------------------------------------------------------------------------ |
| `PLATFORM_API_KEY`                | secret   | both        | Platform API key from Viewport - **Settings → API Keys**.                      |
| `PLATFORM_PRODUCT_ID`             | variable | preview     | Duku product ID from Viewport - **Products**.                                  |
| `DUKU_STAGING_TARGET_ID`          | variable | environment | Pre created target ID from Viewport. You can use any variable name.            |
| `VERCEL_AUTOMATION_BYPASS_SECRET` | secret   | preview     | Optional bypass secret for Vercel Deployment Protection on protected previews. |

### Versioning and pinning

Each action is versioned independently with an `<action>/v<semver>` tag:

```yaml
# Pin to a specific release. Recommended for reproducibility.
- uses: duku-ai/actions/preview@preview/v0.2.0
- uses: duku-ai/actions/environment@environment/v0.3.0
```

Both actions are currently pre release in `0.x`, so pin to a specific immutable tag.

A floating major tag, such as `preview/v1`, becomes available once an action ships its first stable `v1.0.0` release.

Threshold based merge gating and GitHub Check Run integration are not yet available in `0.x`. Until then, gate merges on the PR comment or Viewport results, not on the action exit code.

### Read next

* [Quickstart: preview action](/integrations/github-actions/quickstart-preview-action.md)
* [Quickstart: environment action](/integrations/github-actions/quickstart-environment-action.md)
* [Troubleshooting](/integrations/github-actions/troubleshooting.md)
