Automating Cerbos Policy deployments with Azure DevOps Pipelines
This guide shows you how to set up an Azure DevOps Pipeline to automatically upload your Cerbos policies to a Cerbos Hub store whenever you push changes to the main branch of your repository.
Prerequisites
- An Azure DevOps organization and a Project.
- Your policies is hosted in a repository (either Azure Repos or linked from GitHub, Bitbucket).
- The ID of your Cerbos Hub store, which you can find in the store section of the Cerbos Hub.
- Your
CERBOS_HUB_CLIENT_IDandCERBOS_HUB_CLIENT_SECRETvalues generated in the Client credentials section of the Cerbos Hub store. Make sure to select theRead & Writeoption when creating the credentials to allow uploading policies.
Step 1: Create the Pipeline YAML File
. In the root directory of your repository, create a new file named azure-pipelines.yml.
. Copy and paste the following code into the file. This code defines the trigger, the agent environment, and the steps to run.
. Replace [STORE_ID] with the ID of your Cerbos Hub store. You can find this in the Cerbos Hub UI under the store settings.
----
# azure-pipelines.yml
trigger:
branches:
include:
- main # This pipeline runs on pushes to the main branch
pool:
vmImage: 'ubuntu-latest' # Use a Microsoft-hosted Linux agent
jobs:
- job: UploadCerbosPolicies
displayName: 'Upload Cerbos Policies'
steps:
# Step 1: Check out the source code from the repository
- checkout: self
# Step 2: Run the docker command to upload policies
- script: |
docker run --rm \
-e CERBOS_HUB_STORE_ID="[STORE_ID]" \
-e CERBOS_HUB_CLIENT_ID=$CERBOS_HUB_CLIENT_ID \
-e CERBOS_HUB_CLIENT_SECRET=$CERBOS_HUB_CLIENT_SECRET \
-v "$(System.DefaultWorkingDirectory)":/app \
ghcr.io/cerbos/cerbosctl:latest \
hub store replace-files /app --message="Policy upload from Azure DevOps"
displayName: 'Upload Policies to Cerbos Hub'
env:
# Map the secret variables created in the UI to environment variables for this script
CERBOS_HUB_CLIENT_ID: $(CERBOS_HUB_CLIENT_ID)
CERBOS_HUB_CLIENT_SECRET: $(CERBOS_HUB_CLIENT_SECRET)
Key Azure DevOps Concepts Used:
trigger: Defines when the pipeline runs, equivalent toon:in GitHub Actions.pool: Specifies the type of build agent to use, equivalent toruns-on.jobandsteps: Structure the work to be done.checkout: self: The task to get your source code.script: A simple task to run a shell script.$(System.DefaultWorkingDirectory): The predefined variable for the checkout directory, like$PWDor$CI_PROJECT_DIR.env:: The section where you map pipeline variables to environment variables for the script, note the$(VariableName)syntax.
Step 2: Create the Pipeline in Azure DevOps
- Go to your Azure DevOps project. In the left sidebar, click on Pipelines.
- Click the New pipeline button (or Create pipeline if it is your first one).
- Where is your code? Select the correct location, for example, Azure Repos Git, GitHub. You may need to authorize access.
- Select a repository: Choose the repository where you just added the
azure-pipelines.ymlfile. - Configure your pipeline: Azure DevOps detects your YAML file. Select Existing Azure Pipelines YAML file.
- Select the branch, for example,
mainand the path,/azure-pipelines.yml, then click Continue.
Step 3: Add Your Secrets
- You now see the YAML file in the pipeline editor view. Do not run it yet.
- In the top right corner, click the Variables button.
- Click New variable
-- Name:
CERBOS_HUB_CLIENT_ID-- Value: Paste your client ID. - Check the box for Keep this value secret.
- Click OK.
- Click New variable again.
-- Name:
CERBOS_HUB_CLIENT_SECRET-- Value: Paste your client secret. - Check the box for Keep this value secret.
- Click OK.
- Click the Save button at the bottom of the variables pane.
Step 4: Save and Run the Pipeline
- Now that the secrets are saved, click the Save and run button, or just Run, in the top right corner.
- Confirm the branch and commit message, and click Save and run again.
Step 5: Verify the Run
- You are taken to the pipeline run summary page.
- Click on the
Upload Cerbos Policiesjob to see the live logs. - If everything is configured correctly, all steps complete with a green checkmark, and your policies are uploaded to Cerbos Hub.
Book a free Policy Workshop to discuss your requirements and get your first policy written by the Cerbos team
Recommended content

Mapping business requirements to authorization policy
eBook: Zero Trust for AI, securing MCP servers

Experiment, learn, and prototype with Cerbos Playground
eBook: How to adopt externalized authorization

Framework for evaluating authorization providers and solutions

Staying compliant – What you need to know
Subscribe to our newsletter
Join thousands of developers | Features and updates | 1x per month | No spam, just goodies.
