This is a fork of dsccommunity/AzureDevOpsDsc, published separately as AzureDevOpsDscNative to add native DSC v3 support: every resource is discoverable and invokable by
dsc.exevia theMicrosoft.Adapter/PowerShelladapter, using generated adapted resource manifests - no wrapper resource required. See also @mimachniak's AzureDevOpsDscv3, which takes a different approach (aMicrosoft.Windows/WindowsPowerShellwrapper) to the same goal.
The AzureDevOpsDscNative module contains DSC Resources for deployment and configuration of Azure DevOps and Azure DevOps Server.
This project has adopted this Code of Conduct.
Please review the following Usage Documentation
Releases are tag-driven. Merging to main builds and tests the module but does
not publish anything. A release is cut by pushing a version tag:
git tag v1.2.3
git push origin v1.2.3That triggers the Publish workflow, which
verifies the tag is on main, rebuilds the module with the version taken from
the tag, re-runs both unit test suites as a release gate, then creates a GitHub
Release and publishes to
PowerShell Gallery.
Prerelease versions use an alphanumeric suffix — for example v1.2.3-preview0001
— and publish to the Gallery as prereleases, installable with
Install-Module AzureDevOpsDscNative -AllowPrerelease.
See Releasing for the full procedure.
Please check out common DSC Community contributing guidelines.
Additionally, please AzureDevOpsDsc contribution guidelines
for more information about contributing to this module (including an overview of
module structure, design and setup of Integration tests).
This module is tested with Pester 5. Tests live under
tests/ and are split into:
- Unit tests (
tests/Unit) — fast, no external dependencies. - Integration tests (
tests/Integration) — run against a live Azure DevOps organization and require authentication.
Every Describe block is tagged with a type tag and a service tag:
- Type tag —
UnitorIntegration. - Service tag — the resource/service the test covers (for example
ArtifactFeed,Project,GitPermission). The same service tag is applied to a service's unit and integration tests, so one tag selects both.
Some unit tests also keep an additional category tag (API, Cache, ACL,
Helper, Authentication).
Invoke-Pester -Tag Unit # all unit tests
Invoke-Pester -Tag Integration # all integration tests
Invoke-Pester -Tag ArtifactFeed # unit + integration for one service
Invoke-Pester -Tag Unit, API # unit tests for the private API functions# Build the module first so the compiled module and classes are available.
./build.ps1 -Tasks build
Invoke-Pester -Path ./tests/Unit -Tag UnitIntegration tests create and tear down real Azure DevOps resources, so they run through a test framework that handles authentication, setup and teardown. Set the cache directory, then invoke the framework:
$env:AZDODSC_CACHE_DIRECTORY = '<path-to-a-writable-cache-folder>'
Set-Location ./tests/Integration
. ./Invoke-Tests.ps1 -TestFrameworkConfigurationPath ./TestFrameworkConfiguration.jsonTo iterate on a subset (specific files and/or Context blocks) without running the
whole suite, use the targeted runner:
. ./Invoke-TargetedTests.ps1 `
-TestFrameworkConfigurationPath ./TestFrameworkConfiguration.json `
-TestFile AzDoArtifactFeed `
-FullName '*Creating*'See tests/README.md for the full tag taxonomy and more detail.
A full list of changes in each version can be found in the change log.
Each resource links to its example/usage documentation.
| Resource | Description |
|---|---|
| AzDoProject | Creates and manages Azure DevOps projects. |
| AzDoProjectServices | Enables or disables services (Repos, Boards, Pipelines, Test Plans, Artifacts) within a project. |
| AzDoOrganizationSettings | Manages organization-level settings. |
| AzDoProjectGroup | Creates and manages groups within a project. |
| AzDoOrganizationGroup | Creates and manages groups at the organization level. |
| AzDoGroupMember | Manages membership of users, groups and service principals in a group. |
| AzDoTeam | Creates and manages teams within a project. |
| AzDoTeamMember | Manages membership of a team. |
| AzDoTeamSettings | Configures a team's iteration/area paths, working days and bug behaviour. |
| AzDoUserEntitlement | Adds/removes organization users and manages their access level (license). |
| AzDoGroupEntitlement | Manages group licensing rules (access levels applied to every member of a group). |
| AzDoServicePrincipalEntitlement | Manages service principals and managed identities as organization members. |
| Resource | Description |
|---|---|
| AzDoGitRepository | Creates and manages Git repositories within a project. |
| AzDoRepositorySettings | Manages Git repository settings. |
| AzDoBranchPolicy | Manages branch policies (e.g. minimum reviewer count) on a repository. |
| Resource | Description |
|---|---|
| AzDoProjectPermission | Manages project-level permissions for identities. |
| AzDoGitPermission | Manages fine-grained Git repository permissions for identities. |
| AzDoAreaPermission | Manages area path (classification node) permissions. |
| AzDoIterationPermission | Manages iteration path (classification node) permissions. |
| AzDoAgentPoolPermission | Manages agent pool permissions. |
| AzDoEnvironmentPermission | Manages pipeline environment permissions. |
| AzDoPipelinePermission | Manages build/pipeline permissions. |
| AzDoPipelineFolderPermission | Manages permissions on pipeline folders, which definitions inherit. |
| AzDoServiceConnectionPermission | Manages service connection (endpoint) permissions. |
| AzDoVariableGroupPermission | Manages variable group (library) permissions. |
| AzDoSecureFilePermission | Manages secure file (library) permissions. |
| AzDoArtifactFeedPermission | Manages artifact feed permissions. |
| AzDoSecurityNamespacePermission | Manages permissions for an arbitrary security namespace and token. |
| AzDoGroupPermission | (Not currently supported) Manages group-level identity permissions. |
| AzDoQueryPermission | Manages permissions on work item query folders. |
| Resource | Description |
|---|---|
| AzDoPipeline | Creates and manages YAML pipeline definitions. |
| AzDoPipelineFolder | Manages the pipeline (build) folder tree. |
| AzDoPipelineEnvironment | Creates and manages pipeline environments. |
| AzDoEnvironmentApproval | Manages approval checks on a pipeline environment. |
| AzDoCheckConfiguration | Manages pipeline checks (e.g. Approval) on a protected resource. |
| AzDoDeploymentGroup | Creates and manages deployment groups. |
| AzDoAgentPool | Creates and manages organization agent pools. |
| AzDoAgentQueue | Creates and manages project agent queues. |
| AzDoTaskGroup | Creates and manages task groups. |
| AzDoVariableGroup | Creates and manages variable groups (library). |
| AzDoSecureFile | Manages secure files (certificates, keystores) available to pipelines. |
| AzDoServiceConnection | Creates and manages service connections (service endpoints). |
| AzDoPipelineSettings | Manages a project's pipeline general settings (job auth scope, settable variables, etc.). |
| Resource | Description |
|---|---|
| AzDoAreaNodes | Manages area path classification nodes. |
| AzDoIterationNodes | Manages iteration path classification nodes. |
| AzDoWIPTags | Manages work item tags. |
| AzDoWIPTagHygiene | Detects and corrects misaligned work item tags (typos, case and punctuation drift) against a canonical vocabulary. |
| AzDoQueryFolder | Manages folders in the shared work item query tree. |
| AzDoWorkItemQuery | Manages shared work item queries, including WIQL, columns and sort order. |
| AzDoNotificationSubscription | Manages notification subscriptions. |
Customizing an inherited process is a layered job, and the resources are usually declared in this
order. Only inherited processes can be customized — the system processes (Agile, Scrum, Basic,
CMMI) are read-only, so start by creating an inherited process with AzDoProcess.
| Resource | Description |
|---|---|
| AzDoProcess | Creates and manages inherited processes (process templates). |
| AzDoPicklist | Manages picklists — the allowed values behind picklist-typed custom fields. Organization-scoped, so one list backs fields across processes. |
| AzDoProcessWorkItemType | Manages custom and inherited work item types on an inherited process. |
| AzDoProcessField | Manages fields on a work item type, including the required, default and read-only settings. |
| AzDoProcessState | Manages custom workflow states on a work item type. |
| AzDoProcessRule | Manages conditional rules on a work item type. |
| AzDoProcessBehavior | Associates a work item type with a backlog level. A custom work item type appears on no backlog and no board until this is declared. |
| AzDoProcessPermission | Manages Process security namespace permissions, e.g. who can create inherited processes. |
| Resource | Description |
|---|---|
| AzDoArtifactFeed | Creates and manages artifact feeds. |
| AzDoArtifactFeedSettings | Configures feed upstream sources, deleted-version hiding and retention policy. |
| AzDoArtifactFeedView | Creates and manages feed views (e.g. @Release). |
| AzDoWiki | Creates and manages project and code wikis. |
| AzDoExtension | Installs and uninstalls organization extensions. |
| AzDoAuditStream | Manages audit log streaming. |
| AzDoServiceHook | Creates and manages service hook subscriptions (e.g. webhooks). |
Each resource has a page under source/Examples/Resources covering its
properties, the behaviour worth knowing before using it, and three worked examples (a DSC
configuration, Invoke-DscResource, and Dsc.PipelineRunner). The tables above link to them
directly.
The same documentation is published to the AzureDevOpsDscNative Wiki, which is updated automatically on each PR merge.
docs/ResourceRoadmap.md is the plan of record for what the module
covers and what is still outstanding, with the reasoning behind the priority order. Start there
before adding a resource.
The Examples directory holds runnable configurations for every resource. They are also available in the AzureDevOpsDscNative Wiki.