Azure DevOps Integration
Integrate Kosli with Azure DevOps Pipelines for automated compliance and deployment tracking
Overview
Integrate Kosli with Azure DevOps Pipelines to track deployments and collect compliance evidence.
Setup
Configure Pipeline Variables
Add to Pipeline > Variables:
KOSLI_API_TOKEN(Secret)KOSLI_ORG
Basic Pipeline
trigger:
branches:
include:
- main
pool:
vmImage: 'ubuntu-latest'
variables:
KOSLI_FLOW: 'microservice-api'
IMAGE_NAME: 'myapp:$(Build.BuildId)'
stages:
- stage: Build
jobs:
- job: BuildAndReport
steps:
- script: |
curl -sSL https://cli.kosli.com/install.sh | sh
export PATH=$PATH:$HOME/.kosli/bin
echo "##vso[task.setvariable variable=PATH]$PATH:$HOME/.kosli/bin"
displayName: 'Install Kosli CLI'
- script: docker build -t $(IMAGE_NAME) .
displayName: 'Build Docker Image'
- script: |
kosli report artifact $(IMAGE_NAME) \
--artifact-type docker \
--flow $(KOSLI_FLOW) \
--build-url $(System.TeamFoundationCollectionUri)$(System.TeamProject)/_build/results?buildId=$(Build.BuildId) \
--commit $(Build.SourceVersion) \
--git-commit-info HEAD
displayName: 'Report Artifact to Kosli'
env:
KOSLI_API_TOKEN: $(KOSLI_API_TOKEN)
KOSLI_ORG: $(KOSLI_ORG)
- stage: Evidence
jobs:
- job: CollectEvidence
steps:
- script: pytest --junitxml=test-results.xml
displayName: 'Run Tests'
- script: |
kosli report evidence test junit \
--flow $(KOSLI_FLOW) \
--name $(IMAGE_NAME) \
--results-file test-results.xml
displayName: 'Report Test Evidence'
env:
KOSLI_API_TOKEN: $(KOSLI_API_TOKEN)
KOSLI_ORG: $(KOSLI_ORG)
- script: trivy image --format json -o scan.json $(IMAGE_NAME)
displayName: 'Security Scan'
- script: |
kosli report evidence generic \
--flow $(KOSLI_FLOW) \
--name $(IMAGE_NAME) \
--evidence-type security-scan \
--attachments scan.json
displayName: 'Report Security Evidence'
env:
KOSLI_API_TOKEN: $(KOSLI_API_TOKEN)
KOSLI_ORG: $(KOSLI_ORG)
- stage: Deploy
jobs:
- deployment: DeployProduction
environment: production
strategy:
runOnce:
deploy:
steps:
- script: kubectl apply -f k8s/
displayName: 'Deploy to Kubernetes'
- script: |
kosli report deployment production \
--flow $(KOSLI_FLOW) \
--name $(IMAGE_NAME)
displayName: 'Report Deployment'
env:
KOSLI_API_TOKEN: $(KOSLI_API_TOKEN)
KOSLI_ORG: $(KOSLI_ORG)
- script: |
kosli snapshot k8s production \
--namespace production
displayName: 'Snapshot Environment'
env:
KOSLI_API_TOKEN: $(KOSLI_API_TOKEN)
KOSLI_ORG: $(KOSLI_ORG)PowerShell Script Option
Next Steps
Last updated