Azure DevOps · Arazzo Workflow

Azure DevOps Provision a Build Definition and Run It

Version 1.0.0

Create a build definition, confirm it, and queue its first build.

1 workflow 1 source API 1 provider
View Spec View on GitHub AgileCI/CDDevOpsProject ManagementVersion ControlArazzoWorkflows

Provider

microsoft-azure-devops

Workflows

provision-build-definition
Create a build definition, confirm it, and queue its first build.
Creates a build definition, retrieves it to confirm creation, and queues an initial build.
3 steps inputs: accessToken, apiVersion, definition, sourceBranch outputs: buildId, definitionId
1
createDefinition
definitions_create
Create the build definition from the supplied definition body.
2
confirmDefinition
definitions_get
Fetch the build definition by ID to confirm it was created and capture its current revision.
3
queueFirstBuild
builds_queue
Queue an initial build against the newly created definition.

Source API Descriptions

Arazzo Workflow Specification

microsoft-azure-devops-build-definition-provision-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Azure DevOps Provision a Build Definition and Run It
  summary: Create a build definition, confirm it, and queue its first build.
  description: >-
    Stands up a new classic build definition and immediately exercises it. The
    workflow creates the build definition from a supplied definition body,
    fetches it by the returned ID to confirm the configuration, and then queues a
    first build against that definition. Every step spells out its request inline
    so the flow can be read and executed without opening the underlying OpenAPI
    description.
  version: 1.0.0
sourceDescriptions:
- name: buildsApi
  url: ../openapi/azure-devops-builds-api-openapi.yml
  type: openapi
workflows:
- workflowId: provision-build-definition
  summary: Create a build definition, confirm it, and queue its first build.
  description: >-
    Creates a build definition, retrieves it to confirm creation, and queues an
    initial build.
  inputs:
    type: object
    required:
    - apiVersion
    - definition
    properties:
      apiVersion:
        type: string
        description: Azure DevOps REST API version (e.g. 7.1).
      definition:
        type: object
        description: >-
          Build definition body matching BuildDefinitionCreateRequest (name,
          repository, process, queue, etc.).
      sourceBranch:
        type: string
        description: Optional source branch for the first queued build.
      accessToken:
        type: string
        description: Azure DevOps bearer (OAuth 2.0) access token.
  steps:
  - stepId: createDefinition
    description: >-
      Create the build definition from the supplied definition body.
    operationId: definitions_create
    parameters:
    - name: api-version
      in: query
      value: $inputs.apiVersion
    requestBody:
      contentType: application/json
      payload: $inputs.definition
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      definitionId: $response.body#/id
      definitionName: $response.body#/name
  - stepId: confirmDefinition
    description: >-
      Fetch the build definition by ID to confirm it was created and capture its
      current revision.
    operationId: definitions_get
    parameters:
    - name: api-version
      in: query
      value: $inputs.apiVersion
    - name: definitionId
      in: path
      value: $steps.createDefinition.outputs.definitionId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      revision: $response.body#/revision
  - stepId: queueFirstBuild
    description: >-
      Queue an initial build against the newly created definition.
    operationId: builds_queue
    parameters:
    - name: api-version
      in: query
      value: $inputs.apiVersion
    requestBody:
      contentType: application/json
      payload:
        definition:
          id: $steps.createDefinition.outputs.definitionId
        sourceBranch: $inputs.sourceBranch
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      buildId: $response.body#/id
      buildNumber: $response.body#/buildNumber
  outputs:
    definitionId: $steps.createDefinition.outputs.definitionId
    buildId: $steps.queueFirstBuild.outputs.buildId