Azure DevOps · Arazzo Workflow

Azure DevOps Provision a Release Definition and Cut a Release

Version 1.0.0

Create a release definition, confirm it, and create a first release from it.

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

Provider

microsoft-azure-devops

Workflows

provision-release-definition
Create a release definition, confirm it, and cut a first release.
Creates a release definition, retrieves it to confirm creation, and creates an initial release from it.
3 steps inputs: accessToken, apiVersion, artifactAlias, artifactInstanceId, artifactInstanceName, definition outputs: definitionId, releaseId
1
createDefinition
releaseDefinitions_create
Create the release definition from the supplied definition body.
2
confirmDefinition
releaseDefinitions_get
Fetch the release definition by ID to confirm it was created and capture its revision.
3
createFirstRelease
releases_create
Create a first release from the newly provisioned definition, binding the named artifact to the requested build instance.

Source API Descriptions

Arazzo Workflow Specification

microsoft-azure-devops-release-definition-provision-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Azure DevOps Provision a Release Definition and Cut a Release
  summary: Create a release definition, confirm it, and create a first release from it.
  description: >-
    Stands up a new classic release pipeline and cuts an initial release. The
    workflow creates a release definition from a supplied definition body,
    fetches it by the returned ID to confirm the environments and artifact
    sources, and then creates a first release from that definition bound to a
    build artifact. 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: releasesApi
  url: ../openapi/azure-devops-releases-api-openapi.yml
  type: openapi
workflows:
- workflowId: provision-release-definition
  summary: Create a release definition, confirm it, and cut a first release.
  description: >-
    Creates a release definition, retrieves it to confirm creation, and creates
    an initial release from it.
  inputs:
    type: object
    required:
    - apiVersion
    - definition
    - artifactAlias
    - artifactInstanceId
    - artifactInstanceName
    properties:
      apiVersion:
        type: string
        description: Azure DevOps REST API version (e.g. 7.1).
      definition:
        type: object
        description: >-
          Release definition body matching the ReleaseDefinition schema (name,
          environments, artifacts, etc.).
      artifactAlias:
        type: string
        description: Artifact alias as defined in the release definition.
      artifactInstanceId:
        type: string
        description: Build ID or artifact version ID to deploy in the first release.
      artifactInstanceName:
        type: string
        description: Build number or version string for the artifact.
      accessToken:
        type: string
        description: Azure DevOps bearer (OAuth 2.0) access token.
  steps:
  - stepId: createDefinition
    description: >-
      Create the release definition from the supplied definition body.
    operationId: releaseDefinitions_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 release definition by ID to confirm it was created and capture
      its revision.
    operationId: releaseDefinitions_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: createFirstRelease
    description: >-
      Create a first release from the newly provisioned definition, binding the
      named artifact to the requested build instance.
    operationId: releases_create
    parameters:
    - name: api-version
      in: query
      value: $inputs.apiVersion
    requestBody:
      contentType: application/json
      payload:
        definitionId: $steps.createDefinition.outputs.definitionId
        artifacts:
        - alias: $inputs.artifactAlias
          instanceReference:
            id: $inputs.artifactInstanceId
            name: $inputs.artifactInstanceName
        isDraft: false
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      releaseId: $response.body#/id
  outputs:
    definitionId: $steps.createDefinition.outputs.definitionId
    releaseId: $steps.createFirstRelease.outputs.releaseId