> ## Documentation Index
> Fetch the complete documentation index at: https://docs.paradime.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Turbo CI on Azure DevOps pull requests

> Trigger a Paradime Turbo CI Bolt schedule from an Azure Pipeline to build and test only the dbt™ models changed in a pull request before merge.

export const Arcade = ({src, title}) => <div style={{
  position: 'relative',
  paddingBottom: 'calc(56.2225% + 41px)',
  height: 0,
  width: '100%'
}}>
    <iframe src={src} title={title} frameBorder="0" loading="lazy" allow="clipboard-write" allowFullScreen style={{
  position: 'absolute',
  top: 0,
  left: 0,
  width: '100%',
  height: '100%',
  colorScheme: 'light'
}} />
  </div>;

Run Turbo CI on Azure DevOps pull requests. First complete the shared [Turbo CI setup](/products/bolt/ci-cd/turbo-ci/index) — the `ci` environment, the custom schema macro, and the Turbo CI job — then wire up your Azure DevOps pipeline.

## Generate API keys

To trigger the Turbo CI schedule from your pipeline, generate a Paradime [API key](/developers/api-keys) with the **Bolt schedules admin** capability. Generate an **Account API key** (a `prdm_cmp_...` Bearer token) and save the token, your **workspace token**, and the **API endpoint**; you will add them as CI/CD variables in the next step.

<Card title="Generate API keys" href="/developers/api-keys" horizontal icon="arrow-right" />

## Create an Azure Pipeline

Create an `azure-pipeline.yml` file in your dbt™ repository and enter the values required.

```yaml title="paradime_turbo_ci.yml" lineNumbers theme={"system"}
# Disable CI trigger (won't run on direct pushes)
trigger:
 - none

# Run on PRs from any branch
pr:
 - "*"

# Define pipeline-level variables
variables:
 # Slug of the Paradime schedule/job to run for CI
 - name: PARADIME_SCHEDULE_SLUG
   value: "flowing-pachy-wyy4fs"

steps:
 # Set up Python
 - task: UsePythonVersion@0
   inputs:
     versionSpec: "3.11"
     addToPath: true
   displayName: Use Python 3.11

 # Install the Paradime SDK and run the Turbo CI job
 - script: |
     pip install paradime-io

     # $(VARIABLE) references Azure Pipeline variables
     export PARADIME_API_ENDPOINT=$(PARADIME_API_ENDPOINT)
     export PARADIME_WORKSPACE_UID=$(PARADIME_WORKSPACE_UID)
     export PARADIME_API_SECRET=$(PARADIME_API_SECRET)

     export PR_NUMBER=$(System.PullRequest.PullRequestNumber)
     export HEAD_COMMIT_SHA=$(System.PullRequest.SourceCommitId)

     paradime bolt run "$(PARADIME_SCHEDULE_SLUG)" --branch $HEAD_COMMIT_SHA --pr-number $PR_NUMBER --wait
   displayName: "Run Paradime Turbo CI"
```

## Add the variables in Azure Pipelines

Add these as Azure Pipeline variables:

* `PARADIME_API_SECRET` — your account API key (`prdm_cmp_...`)
* `PARADIME_WORKSPACE_UID` — your workspace token
* `PARADIME_API_ENDPOINT`

<Arcade src="https://demo.arcade.software/tCJyMGYsHX7weycpd3kq?embed&embed_mobile=tab&embed_desktop=inline&show_copy_link=true" title="Azure DevOps" />

## Set up branch build validation

Set up PR build validation on your dbt™ repository so the Azure Pipeline runs Turbo CI when a PR is opened against your default branch. See the [Azure DevOps build validation docs](https://learn.microsoft.com/en-us/azure/devops/repos/git/branch-policies?tabs=browser\&view=azure-devops#build-validation).

<Arcade src="https://demo.arcade.software/7HJxslEUB3lrQkCMbUtj?embed&embed_mobile=tab&embed_desktop=inline&show_copy_link=true" title="Azure DevOps" />

## View run logs

Inspect the run logs for each Turbo CI run like any other Bolt schedule.

<Card title="Run details" href="/products/bolt/managing-schedules/run-details" horizontal icon="arrow-right" />


## Related topics

- [Column-Level Lineage Diff on Azure DevOps](/products/bolt/ci-cd/lineage-diff/azure-devops.md)
- [Turbo CI for dbt™ pull requests](/products/bolt/ci-cd/turbo-ci/index.md)
- [Bolt CI/CD for dbt™ pull requests and deploys](/products/bolt/ci-cd/index.md)
- [Azure DevOps](/integrations/azure-devops.md)
- [bolt-ci-healer](/guides/programmable-agents/bolt-ci-healer.md)
