Azure DevOps Governance Gate
GOVERN Build extension
Install the GOVERN Build extension from the Azure DevOps Marketplace:
Marketplace → Search "GOVERN Build" → Archetypal AI → InstallPipeline YAML (GOVERN Build task)
trigger: branches: include: - main - develop
pr: branches: include: - main
variables: aiModel: 'claude-sonnet-4-20250514'
stages: - stage: Test jobs: - job: UnitTests pool: vmImage: ubuntu-latest steps: - task: NodeTool@0 inputs: versionSpec: '20.x' - script: npm ci && npm test displayName: Unit tests
- stage: Govern dependsOn: Test jobs: - job: GovernBuild pool: vmImage: ubuntu-latest steps: - task: GovernBuild@1 displayName: GOVERN Build Gate inputs: apiKey: $(GOVERN_API_KEY) orgId: $(GOVERN_ORG_ID) model: $(aiModel) testPrompts: tests/govern/prompts.json failOn: flag outputFormat: junit env: ANTHROPIC_API_KEY: $(ANTHROPIC_API_KEY)
- task: PublishTestResults@2 condition: always() inputs: testResultsFormat: JUnit testResultsFiles: govern-junit.xml testRunTitle: GOVERN Build Results
- task: PublishBuildArtifacts@1 condition: always() inputs: pathToPublish: govern-results.json artifactName: govern-results
- stage: Deploy dependsOn: Govern condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - deployment: Production environment: production strategy: runOnce: deploy: steps: - script: ./deploy.shCLI-based approach (no extension)
- stage: Govern jobs: - job: GovernBuild pool: vmImage: ubuntu-latest steps: - script: npm install -g @archetypal-ai/govern-cli displayName: Install GOVERN CLI
- script: | govern assess \ --batch-file tests/govern/prompts.json \ --model $(aiModel) \ --fail-on-flag \ --output junit > govern-junit.xml displayName: GOVERN Build Assessment env: GOVERN_API_KEY: $(GOVERN_API_KEY) GOVERN_ORG_ID: $(GOVERN_ORG_ID)
- task: PublishTestResults@2 condition: always() inputs: testResultsFormat: JUnit testResultsFiles: govern-junit.xmlVariable groups
Store GOVERN credentials in a variable group:
- Pipelines → Library → Variable groups → New variable group
- Name:
govern-credentials - Add variables:
GOVERN_API_KEY(secret)GOVERN_ORG_ID
Reference in pipeline:
variables: - group: govern-credentialsBranch policies
Add GOVERN Build as a required status check:
- Repos → Branches → [branch] → Branch policies
- Add status policy
- Status name:
GOVERN Build Gate - Policy requirement: Required
Now pull requests cannot complete without a passing GOVERN Build check.