> For the complete documentation index, see [llms.txt](https://docs.does.qa/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.does.qa/platform/integrations/gitlab.md).

# GitLab

Connect GitLab CI to DoesQA so every pipeline can start a Run, wait for the result, and keep shipping with confidence. The DoesQA catalog component wraps the [Universal Webhook](/platform/integrations/universal-webhook.md) in a drop-in GitLab include.

{% embed url="<https://gitlab.com/explore/catalog/doesqa/doesqa-gitlab-cicd>" %}

## Why use it

* Start DoesQA from the same `.gitlab-ci.yml` that builds and deploys your app.
* Wait for the Run to finish before the job continues, when you want the pipeline to reflect the result.
* Reuse the same key, tags, Recipes, and Value overrides you already use with the Universal Webhook.

## Before you start

1. Create an Active CI/CD webhook key under **Settings → CI/CD**. See [CI / CD](/configuration/ci-cd.md).
2. Copy your **Account ID** from Account Settings.
3. Store `DOESQA_KEY` and `DOESQA_ACCOUNT_ID` as GitLab CI/CD variables.

## Add the component

Include the component in `.gitlab-ci.yml`. Check [DoesQA GitLab releases](https://gitlab.com/doesqa/doesqa-gitlab-cicd/-/releases) for the latest production tag, and use the same value for the component version and `DOESQA_COMPONENT_VERSION`.

```yaml
include:
  - component: gitlab.com/doesqa/doesqa-gitlab-cicd/doesqa-run@2.0.0
    inputs:
      DOESQA_COMPONENT_VERSION: "2.0.0"
      DOESQA_KEY: "$DOESQA_KEY"
      DOESQA_ACCOUNT_ID: "$DOESQA_ACCOUNT_ID"
      DOESQA_LABEL: "Nightly Test Run"
      DOESQA_WITHALL: "smoke,staging"
      DOESQA_WITHOUTANY: "wip"
      DOESQA_VALUES: '{"BASE_URL": "https://staging.example.com"}'
      DOESQA_WAIT: "true"
      DOESQA_TIMEOUT: "1800"
      DOESQA_RECIPE: "4sJz2"
      DOESQA_TESTSTAGGED: "priority"
```

{% hint style="info" %}
**Pro tip:** Keep `DOESQA_COMPONENT_VERSION` identical to the `@` tag on the include line so GitLab and the component stay on the same release.
{% endhint %}

## Inputs

| Input                      | Required | What it does                                          |
| -------------------------- | -------- | ----------------------------------------------------- |
| `DOESQA_KEY`               | Yes      | CI/CD webhook key                                     |
| `DOESQA_ACCOUNT_ID`        | Yes      | Account ID from Account Settings                      |
| `DOESQA_COMPONENT_VERSION` | Yes      | Must match the component tag you include              |
| `DOESQA_LABEL`             | No       | Label shown on the Run                                |
| `DOESQA_WITHALL`           | No       | Include tags. The Flow must have all of them.         |
| `DOESQA_WITHOUTANY`        | No       | Exclude tags. The Flow must have none of them.        |
| `DOESQA_VALUES`            | No       | JSON object of Value overrides                        |
| `DOESQA_WAIT`              | No       | Wait for the Run to finish before the job continues   |
| `DOESQA_TIMEOUT`           | No       | How long to wait, in seconds, when waiting is enabled |
| `DOESQA_RECIPE`            | No       | Run Recipe ID                                         |
| `DOESQA_TESTSTAGGED`       | No       | Only Test Cases with this tag                         |
| `DOESQA_CONCURRENCY`       | No       | Cap how many Test Cases from this Run run at once     |

## Related

* [Integrations](/platform/integrations.md)
* [Universal Webhook](/platform/integrations/universal-webhook.md)
* [CI / CD](/configuration/ci-cd.md)
* [Run Recipes](/configuration/run-recipes.md)
* [Max Concurrency](/configuration/max-concurrency.md)
* [Notifications](/configuration/notifications.md)
* [Build smoke and regression coverage](/better-coverage/build-smoke-and-regression-coverage.md)
