Azure Pipelines in Azure DevOps
Using Azure Pipelines in Azure DevOps
Choose an MCP Server configuration
Choose the MCP Server configuration for this pipeline.
Lineaje-hosted MCP Server
Use the existing Lineaje SaaS MCP endpoint configuration below.
https://mcp-code.v2.prod.veedna.com/mcpCustomer-hosted Hybrid MCP Server
Configure the pipeline to use your Hybrid UnifAI MCP Server endpoint:
https://<CUSTOMER_VM_OR_FQDN>/mcpBefore configuring this option:
The Hybrid UnifAI MCP Server must already be deployed.
The MCP Server health check must succeed.
The Azure Pipelines agent must be able to reach the configured MCP endpoint.
Deploy and verify the server first in Deploy UnifAI on Azure.
Lineaje-hosted MCP Server
Use these steps if your repositories are on Azure Repos Git in Azure DevOps Services. The scan runs on a Microsoft-hosted agent and connects to the Lineaje SaaS MCP endpoint.
Before You Start
An Azure DevOps organization with an Azure Repos Git repository, and permission to create pipelines and pipeline variables in the project.
A Lineaje PAT (Personal Access Token).
Generate a Lineaje PAT
A Lineaje PAT authenticates the Azure Pipeline to Lineaje.
Follow these steps to generate a Lineaje PAT from your Lineaje account. The token grants the pipeline access to the Lineaje scan service:
Log in at app.veedna.com and navigate to SBOM360 → Integrations → Deploy Private Cloud → Personal Access Token.
Click the link in the box.
Click Generate Token. A Lineaje login webpage opens.
Authenticate and click Yes. You are returned to the Integrations page.
Copy the PAT displayed on the Integrations page.
Add the Lineaje PAT to Your Azure Pipeline
Store the Lineaje PAT as a secret pipeline variable.
For a single pipeline — after creating the pipeline (step 5), open it, choose Edit → Variables → New variable:
Name:
LINEAJE_PAT_TOKENValue: your Lineaje PAT
Tick Keep this value secret, then OK → Save.
For several repositories — use a variable group instead, which is the Azure equivalent of a GitHub organization secret:
Pipelines → Library → + Variable group, name it e.g.
lineaje.Add
LINEAJE_PAT_TOKEN, click the padlock to mark it secret, and Save.Reference it from each pipeline by adding to
.azuredevops/lineaje-unifai-scan.yml:On the group's Pipeline permissions tab, grant access to each pipeline that needs it.
Use default System.AccessToken or generate custom token
By default, the pipeline authenticates to Azure DevOps with $(System.AccessToken), the build identity's own OAuth token. This is limited to only scans and cannot be used for remediation (ie. creating pull requests).
To enable write access using the SystemToken, go to Project Settings → Repositories → your repo → Security, find the identity named <Project Name> Build Service (<Organization Name>), and set Contribute, Create branch, and Contribute to pull requests to "Allow".
To use an Azure DevOps PAT if the build service identity can't be granted write access, or if the repository lives in a different project or organization from the pipeline:
User settings → Personal access tokens → New Token, scope Code (Read & Write).
Add it as a secret pipeline variable named
AZURE_DEVOPS_PAT.Map it into the scan step alongside the existing
env:entries:The scanner prefers
SYSTEM_ACCESSTOKENwhen both are present, so drop theSYSTEM_ACCESSTOKENline if you plan to useAZURE_DEVOPS_PAT.
Create the pipeline
Pipelines → New pipeline
Azure Repos Git → select your repository
Existing Azure Pipelines YAML file
Branch: your default branch. Path:
/.azuredevops/lineaje-unifai-scan.ymlContinue → Save (use the dropdown next to Run to save without running)
Rename it from the default (the repo name) to something like lineaje-unifai-scan under Pipeline settings → Rename/move.
Last updated