> ## Documentation Index
> Fetch the complete documentation index at: https://docs.genesiscomputing.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Azure DevOps Pipelines Tools

> Connect Genesis to Azure DevOps YAML Pipelines and Classic Releases so agents can trigger runs, poll status, retrieve logs, and manage release definitions.

## **Overview**

<Note>
  Before using this tool group, save an Azure DevOps connection as described in
  [Azure DevOps](/docs/Setup/Azure-DevOps). If `connection_id` is omitted, the
  tools use the effective default `azure_devops` connection for the current
  user (My default, then Role default). Actions that need a project use the
  explicit `project` parameter first and otherwise fall back to the connection's
  saved default `project`. When multiple role defaults conflict, pass
  `connection_id` explicitly or set a user default. See
  [Default connection layers](/docs/Setup/Connections#default-connection-layers).
</Note>

### **Tool Name**

```json theme={null}
azure_devops_pipelines_tools
```

### **Purpose**

The **azure\_devops\_pipelines\_tools** group integrates Genesis with Azure
DevOps YAML Pipelines and Classic Releases. Trigger new YAML pipeline runs,
poll an existing run by id, fetch the run log list or a specific log body, and
list, trigger, and poll Classic Releases.

### **Key Features**

<Steps>
  <Step title="Trigger YAML pipeline runs" icon="rocket">
    Start a YAML pipeline run with optional branch, runtime parameters,
    template parameters, and variables.
  </Step>

  <Step title="Poll YAML pipeline status" icon="clock-rotate-left">
    Retrieve the latest state for a specific run id and pipeline id.
  </Step>

  <Step title="Inspect YAML logs" icon="file-lines">
    List run logs or fetch one specific log entry after completion or failure.
  </Step>

  <Step title="List, trigger, and poll Classic Releases" icon="boxes-stacked">
    Retrieve release definitions, create releases from a definition, and poll
    environment status for a specific release id.
  </Step>
</Steps>

## **Input Parameters for Each Function**

### **`ado_run_pipeline`**

| **Name** | **Type** | **Default** | **Definition** |
| - | - | - | - |
| **`pipeline_id`** | Integer | none | Required. Azure DevOps pipeline id. |
| **`project`** | String | connection default project when available | Optional Azure DevOps project. |
| **`branch`** | String | `None` | Optional branch name to run. Genesis sends it as `refs/heads/<branch>` in the pipeline run payload. |
| **`parameters`** | Object | `None` | Optional runtime parameters object. |
| **`template_parameters`** | Object | `None` | Optional YAML template parameters object. |
| **`variables`** | Object | `None` | Optional pipeline variables object. Scalar values are wrapped automatically as Azure DevOps variable objects. |
| **`connection_id`** | String | default `azure_devops` connection | Optional saved Azure DevOps connection name. |

### **`ado_get_pipeline_run`**

| **Name** | **Type** | **Default** | **Definition** |
| - | - | - | - |
| **`run_id`** | Integer | none | Required. Azure DevOps pipeline run id. |
| **`pipeline_id`** | Integer | none | Required. Azure DevOps pipeline id. |
| **`project`** | String | connection default project when available | Optional Azure DevOps project. |
| **`connection_id`** | String | default `azure_devops` connection | Optional saved Azure DevOps connection name. |

### **`ado_get_pipeline_logs`**

| **Name** | **Type** | **Default** | **Definition** |
| - | - | - | - |
| **`run_id`** | Integer | none | Required. Azure DevOps pipeline run id. |
| **`pipeline_id`** | Integer | none | Required. Azure DevOps pipeline id. |
| **`project`** | String | connection default project when available | Optional Azure DevOps project. |
| **`log_id`** | Integer | `None` | Optional log id. Omit it to list logs for the run; pass it to fetch one specific log. |
| **`connection_id`** | String | default `azure_devops` connection | Optional saved Azure DevOps connection name. |

### **`ado_list_release_definitions`**

| **Name** | **Type** | **Default** | **Definition** |
| - | - | - | - |
| **`project`** | String | connection default project when available | Optional Azure DevOps project. |
| **`top`** | Integer | `None` | Optional maximum number of release definitions to return. Must be a positive integer when provided. |
| **`connection_id`** | String | default `azure_devops` connection | Optional saved Azure DevOps connection name. |

### **`ado_trigger_release`**

| **Name** | **Type** | **Default** | **Definition** |
| - | - | - | - |
| **`definition_id`** | Integer | none | Required. Azure DevOps classic release definition id. |
| **`project`** | String | connection default project when available | Optional Azure DevOps project. |
| **`description`** | String | `None` | Optional release description. |
| **`artifacts`** | Array | `None` | Optional release artifacts payload to pass through to Azure DevOps. |
| **`variables`** | Object | `None` | Optional release variables. Scalar values are wrapped automatically as Azure DevOps variable objects. |
| **`is_draft`** | Boolean | `false` | Whether to create the release as a draft. |
| **`connection_id`** | String | default `azure_devops` connection | Optional saved Azure DevOps connection name. |

### **`ado_get_release`**

| **Name** | **Type** | **Default** | **Definition** |
| - | - | - | - |
| **`release_id`** | Integer | none | Required. Azure DevOps classic release id. |
| **`project`** | String | connection default project when available | Optional Azure DevOps project. |
| **`connection_id`** | String | default `azure_devops` connection | Optional saved Azure DevOps connection name. |

## **Workflow/How It Works**

1. Configure your effective default `azure_devops` connection in
   [Azure DevOps](/docs/Setup/Azure-DevOps), or pass `connection_id`.
2. For YAML pipelines, call `ado_run_pipeline` to create a new run.
3. Poll the YAML pipeline run with `ado_get_pipeline_run`.
4. After completion or failure, call `ado_get_pipeline_logs` to list logs or
   fetch a specific log.
5. For Classic Releases, call `ado_list_release_definitions`, then
   `ado_trigger_release`, then poll the release with `ado_get_release`.

## **Examples**

```python theme={null}
# Trigger an Azure DevOps pipeline run on a feature branch
ado_run_pipeline(
    pipeline_id=42,
    project="Platform",
    branch="feature/native-ado",
    parameters={"environment": "dev"},
    template_parameters={"skipDocs": False},
    variables={"GENESIS_TRACE": "true"},
)
```

```python theme={null}
# Poll the current status of a pipeline run
ado_get_pipeline_run(
    run_id=1287,
    pipeline_id=42,
    project="Platform",
)
```

```python theme={null}
# List logs for a run, then fetch one specific log
ado_get_pipeline_logs(
    run_id=1287,
    pipeline_id=42,
    project="Platform",
)

ado_get_pipeline_logs(
    run_id=1287,
    pipeline_id=42,
    project="Platform",
    log_id=3,
)
```

```python theme={null}
# List release definitions, then trigger and poll a Classic Release
ado_list_release_definitions(
    project="Platform",
    top=10,
)

ado_trigger_release(
    definition_id=17,
    project="Platform",
    description="Deploy the latest Platform build to QA",
    variables={"Environment": "qa"},
    is_draft=False,
)

ado_get_release(
    release_id=914,
    project="Platform",
)
```

## **Output**

* **`ado_run_pipeline`** returns `run`. Successful responses also include
  `next_steps` that point callers to `ado_get_pipeline_run` and
  `ado_get_pipeline_logs`.
* **`ado_get_pipeline_run`** returns `run`.
* **`ado_get_pipeline_logs`** returns `logs` when `log_id` is omitted and
  `log` when `log_id` is provided.
* **`ado_list_release_definitions`** returns `definitions` and `count`.
* **`ado_trigger_release`** returns `release_id`, `release`, `web_url`, and
  `next_steps`.
* **`ado_get_release`** returns `release`, `environment_statuses`, and
  `web_url`.

## **Configuration Details**

* Calls that resolve a project require either an explicit `project` parameter
  or a default `project` on the saved connection.
* `variables` can be passed as a simple object such as
  `{"ENV": "dev"}`. Genesis converts scalar values to the Azure DevOps
  `{"value": ...}` form before sending the request for YAML pipeline runs and
  Classic Releases.
* Azure DevOps Services Classic Release calls use `vsrm.dev.azure.com`, so
  outbound allowlists must include that host.

## **Limitations or Notes**

1. `pipeline_id`, `run_id`, `definition_id`, and `release_id` must be valid
   Azure DevOps numeric ids.
2. Omitting `log_id` returns the log listing for a YAML pipeline run rather
   than the content of a specific log entry.
3. `top` must be a positive integer when you pass it to
   `ado_list_release_definitions`.

## **Related Pages**

* [Azure DevOps](/docs/Setup/Azure-DevOps)
* [Azure DevOps Boards Tools](/docs/Genbot-Toolkit/Azure-DevOps-Boards-Tools)
* [Azure DevOps Wiki Tools](/docs/Genbot-Toolkit/Azure-DevOps-Wiki-Tools)
* [Git Action Tools](/docs/Genbot-Toolkit/Git-Action-Tools)
