elsa-workflows / elsa-workflows/elsa-extensions

Add Azure DevOps integration

Open
#124 0 comments 0 reactions 0 assignees View on GitHub
triaged
Dominant language
C#
Stars
49
Forks
48
Avg merge
21h 35m
Merged PRs (30d)
20

Description

This issue tracks the implementation of an integration for **Azure DevOps** in Elsa Workflows. The module should allow workflows to interact with Azure DevOps, supporting Git repositories, pull requests, work items, and builds (and optionally pipelines), in line with the structure used for the GitHub integration.

## **Tasks**

* Create a new module: `Elsa.DevOps.AzureDevOps`
* Implement **Workflow Activities**:
* **Repositories**
* **GetRepository** – Retrieves details of a Git repository.
* **GetBranch** – Retrieves details of a specific branch.
* **ListBranches** – Lists branches in a repository.
* **Pull Requests**
* **GetPullRequest** – Retrieves details of a pull request.
* **CreatePullRequest** – Creates a new pull request.
* **ListPullRequests** – Lists pull requests in a repository.
* **Work Items**
* **GetWorkItem** – Retrieves a work item by ID.
* **CreateWorkItem** – Creates a new work item (Task, Bug, User Story, etc.).
* **UpdateWorkItem** – Updates an existing work item.
* **QueryWorkItems** – Queries work items using WIQL.
* **Builds**
* **GetBuild** – Retrieves a build by ID.
* **ListBuilds** – Lists builds in a project (with optional filters).
* **QueueBuild** – Queues a new build.
* **Triggers** (optional / future)
* Event-driven triggers (e.g. when a PR or work item is updated) would require Azure DevOps Service Hooks or webhooks; can be stubbed like `GitHubTriggerActivity` with `NotImplementedException` for now.
* Add input validation (e.g. via `CanExecuteAsync`) so missing or invalid inputs are reported clearly.
* Add Documentation (`README.md`) with installation, registration, authentication, and activity list.

## **References**

* [Azure DevOps REST API](https://learn.microsoft.com/en-us/rest/api/azure/devops/)
* [.NET client libraries for Azure DevOps](https://learn.microsoft.com/en-us/azure/devops/integrate/concepts/dotnet-client-libraries)

## **Notes**

* Follow the same structure and patterns as `Elsa.DevOps.GitHub` (base activity with org URL + token, connection factory, feature registration, `UseAzureDevOps()` extension).
* Authentication via **organization URL** (e.g. `https://dev.azure.com/{org}`) and **personal access token (PAT)**; document required PAT scopes (Code, Work Items, Build) per activity.
* Works for both Azure DevOps Services (dev.azure.com) and Azure DevOps Server (on-prem) via the organization URL.
* Use SDK types for outputs (e.g. `GitRepository`, `GitPullRequest`, `WorkItem`, `Build`) for strong typing in workflows and designer.

## **Contributor Guidelines**

If you're interested in working on this issue:

1. Comment below to claim it.
2. Follow the [CONTRIBUTING.md](https://github.com/elsa-workflows/elsa-extensions/blob/main/CONTRIBUTING.md) guide.
3. Submit a PR referencing this issue.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.