AzureDevOpsDscNative.psd1

@{
    RootModule           = 'AzureDevOpsDscNative.psm1'

    # Version number of this module.
    #
    # This value is a fallback for local and CI builds only. Released versions are
    # driven by the git tag: the publish workflow sets $env:ModuleVersion from the
    # tag, and the build stamps that value into the packaged manifest instead of this
    # one. Do not hand-edit this to cut a release - push a vX.Y.Z tag.
    moduleVersion      = '1.0.0'

    # ID used to uniquely identify this module
    GUID                 = 'e7eb078e-5e97-42be-ae8f-decb140fc38e'

    # Author of this module
    Author               = 'ZanattaMichael'

    # Company or vendor of this module
    CompanyName          = 'ZanattaMichael'

    # Copyright statement for this module
    Copyright            = 'Copyright the DSC Community contributors and ZanattaMichael. All rights reserved.'

    # Description of the functionality provided by this module
    Description          = 'A fork of the DSC Community AzureDevOpsDsc module with native DSC v3 support: every resource is discoverable and invokable by dsc.exe via the Microsoft.Adapter/PowerShell adapter, using generated adapted resource manifests, without requiring a wrapper resource.'

    # Minimum version of the Windows PowerShell engine required by this module
    PowerShellVersion  = '7.0'

    # Minimum version of the common language runtime (CLR) required by this module
    CLRVersion           = '4.0'

    # Functions to export from this module
    #FunctionsToExport = @()

    # Cmdlets to export from this module
    #CmdletsToExport = @()

    # Variables to export from this module
    VariablesToExport    = @()

    # Aliases to export from this module
    AliasesToExport      = @()

    # Import all the 'DSCClassResource', modules as part of this module
    NestedModules        = @()

    DscResourcesToExport = @('AzDoGroupPermission','AzDoOrganizationGroup','AzDoProject','AzDoProjectServices','AzDoProjectGroup','AzDoGroupMember','AzDoGitRepository','AzDoGitPermission','AzDoAreaPermission','AzDoIterationPermission','AzDoWIPTags','AzDoAreaNodes','AzDoIterationNodes','AzDoBranchPolicy','AzDoVariableGroup','AzDoServiceConnection','AzDoPipelineEnvironment','AzDoAgentPool','AzDoAgentQueue','AzDoTeam','AzDoTeamMember','AzDoPipeline','AzDoPipelinePermission','AzDoEnvironmentApproval','AzDoVariableGroupPermission','AzDoServiceConnectionPermission','AzDoAgentPoolPermission','AzDoSecurityNamespacePermission','AzDoArtifactFeed','AzDoArtifactFeedPermission','AzDoDeploymentGroup','AzDoTaskGroup','AzDoOrganizationSettings','AzDoExtension','AzDoAuditStream','AzDoProjectPermission','AzDoEnvironmentPermission','AzDoWiki','AzDoNotificationSubscription','AzDoRepositorySettings','AzDoCheckConfiguration','AzDoTeamSettings','AzDoArtifactFeedSettings','AzDoArtifactFeedView','AzDoProcess','AzDoProcessPermission','AzDoUserEntitlement','AzDoServiceHook','AzDoPipelineSettings')

    RequiredAssemblies   = @()

    # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
    PrivateData          = @{

        PSData = @{
            # Set to a prerelease string value if the release should be a prerelease.
            Prerelease   = ''

            # Tags applied to this module. These help with module discovery in online galleries.
            Tags         = @('DesiredStateConfiguration', 'DSC', 'DSCResourceKit', 'DSCResource', 'DSCv3', 'AzureDevOps')

            # A URL to the license for this module.
            LicenseUri   = 'https://github.com/ZanattaMichael/AzureDevOpsDsc/blob/main/LICENSE'

            # A URL to the main website for this project.
            ProjectUri   = 'https://github.com/ZanattaMichael/AzureDevOpsDsc'

            # A URL to an icon representing this module.
            IconUri      = 'https://dsccommunity.org/images/DSC_Logo_300p.png'

            # ReleaseNotes of this module.
            # Per-release notes are generated from the CHANGELOG's [Unreleased] section
            # at build time and attached to the GitHub Release. This link is the fallback
            # shown on the Gallery listing.
            ReleaseNotes = '## [1.0.0] - 2026-09-04
 
### Changed
 
- AzureDevOpsDscNative
  - Updated the `Dsc.PipelineRunner` documentation in `USAGE.md` and the
    "Pipeline runner initialization" example in every resource doc under
    `source/Examples/Resources` (published to the GitHub wiki on release) to
    match the latest `Dsc.PipelineRunner` release: `Invoke-AzDoLCM` is now
    `Invoke-DscPipelineRunner` (an Azure DevOps back-compat shim) or, for new
    integrations, the provider-agnostic `Invoke-DscRunner`. The
    `ConfigurationDirectory` and `ConfigurationUrl` parameters were renamed to
    `exportConfigDir` and `ConfigurationSourcePath`, and the cache directory
    environment variable is now `PIPELINERUNNER_CACHE_DIRECTORY` (with
    `AZDODSC_CACHE_DIRECTORY` retained as a back-compat alias).
  - The integration-test release gate now differentiates between a full release
    and a prerelease. A full release tag (`vX.Y.Z`) still requires every
    integration test to pass; a prerelease tag (`vX.Y.Z-<suffix>`) passes
    `allowFailures=true` to the integration workflow, so individual test failures
    are logged as warnings but the release still proceeds - preview builds can
    ship despite flaky or in-progress tests. Setup and infrastructure failures
    (Pester missing, module not resolving, no test result at all) still fail the
    gate in both modes, so a broken environment cannot silently pass. Implemented
    by an `-AllowFailures` switch on `Invoke-Tests.ps1` and an `allowFailures`
    input on `integration-tests.yml` that `publish.yml` sets from the tag.
 
### Added
 
- AzureDevOpsDscNative
  - Added a `/run-azuredevopsdscnative` skill (`.claude/skills/run-azuredevopsdscnative/`)
    with a self-contained driver script for running the Common unit suite
    headless on Linux from a clean container. Installs PowerShell 7 if missing,
    side-loads Pester 5.7.1 from `api.nuget.org` when PowerShell Gallery is
    unreachable, runs the bootstrap, and exits non-zero on test failure. Does
    not run the Classes suite (needs a built module) or the build (needs
    PSGallery-hosted Sampler/ModuleBuilder) or integration tests (need the
    self-hosted runner and a live org).
  - Added a DSC v3 integration test suite under `tests/Integration/V3/`, run by
    `Invoke-V3Tests.ps1` alongside the existing v2 suite on the self-hosted
    runner. It exercises `AzDoProject`, `AzDoGitRepository` and
    `AzDoProjectGroup` end to end through the `dsc` CLI and the PowerShell
    adapter, rather than through `Invoke-DscResource`, so the DSC v3 path is
    covered by CI. The adapter type is resolved at runtime -
    `Microsoft.Adapter/PowerShell` on DSC 3.2.0 and later, falling back to the
    deprecated `Microsoft.DSC/PowerShell` on an older CLI - and can be pinned
    with the `DSC_V3_ADAPTER` environment variable. The runner reports
    pass/fail counts and exits non-zero on failure, and honours the same
    `-AllowFailures` switch as the v2 runner, so a prerelease is not blocked by
    an in-progress v3 test.
  - Added `.github/workflows/integration-tests-v3.yml`, a standalone workflow
    for the DSC v3 suite. It is kept separate from `integration-tests.yml`
    deliberately: the v2 suite takes the better part of an hour, so running v3
    inside it means waiting v2 out to learn anything about v3. Split, the two
    can be dispatched, gated and re-run independently, and since both target the
    same self-hosted runner they queue rather than contend. The workflow builds
    the module, pins `PSModulePath` to that single build, installs the `dsc`
    CLI, runs `Invoke-V3Tests.ps1` and uploads
    `v3-integration-test-results.xml`. `publish.yml` calls it as a second
    release gate beside the v2 gate, with the same prerelease `allowFailures`
    rule, so a release still gates on both suites.
  - Added `tests/Integration/V3/Manifests/DscV3Manifests.tests.ps1`, covering the
    DSC v3 adapted resource manifests that `build.ps1 -Tasks dscv3` generates.
    Nothing was checking them, and their failure mode is silent:
    `DscResource.Authoring` derives each property''s JSON schema type from the
    AST type name, which yields `System.Boolean` for this module''s convention
    rather than the `bool` its type map expects, so the property quietly falls
    back to `"string"`. `Fix_DscAdaptedResourceManifestTypes` repairs that after
    generation - 25 of the 49 manifests need it - but if that task stops running
    or stops matching, every boolean and numeric property becomes a string again
    and the build still goes green. The suite asserts a manifest exists for every
    `[DscResource()]` class, that each declares the right type and the built
    module version, that every property''s schema type matches the type its class
    declares, that no configurable `[DscProperty()]` is missing, that the
    combined manifest list agrees with the individual files (they are generated
    and patched separately, so they can drift), and that the `dsc` CLI can
    actually discover the resources through the adapter. Class shapes are read
    from the built module''s AST, including inherited properties, so the checks do
    not need a DSC host able to load the module.
- AzureDevOpsDsc
  - Added DSC v3 support: all 49 class-based DSC resources now declare `Set()`
    and `Test()` directly (delegating to `AzDevOpsDscResourceBase`) instead of
    relying on pure inheritance, so both the `Microsoft.Adapter/PowerShell`
    runtime adapter and `DscResource.Authoring`''s manifest generator correctly
    detect `get`/`set`/`test` capabilities instead of only `get`.
  - Added a `dscv3` build workflow (`Create_DscAdaptedResourceManifests`,
    `Create_DscResourceManifestsList` from `DscResource.Authoring`) that
    generates DSC v3 adapted resource manifests for every resource into the
    built module output, and wired it into `pack`.
  - Renamed the module from `AzureDevOpsDsc` to `AzureDevOpsDscNative` for
    publishing under this fork, since PowerShell Gallery names are globally
    unique and this repo doesn''t own the existing `AzureDevOpsDsc` listing.
  - Added GitHub Actions workflows: `build.yml` (build + generate DSC v3
    manifests as CI artifacts on every push/PR), `unit-tests.yml` (runs the
    Classes and Common unit test suites), and `publish.yml` (tag-triggered
    release: builds, re-runs both test suites as a release gate, packages the
    module, and publishes a GitHub Release plus - once a Gallery API key is
    configured - PowerShell Gallery).
  - Updated pipeline files to support change of default branch to main.
  - Added GitHub issue templates and pull request template
  ([issue #1](https://github.com/dsccommunity/AzureDevOpsDsc/issues/1))
  - Added the `AzDevOpsProject`, DSC Resource
  - Fixed non-terminating, integration tests ([issue #18](https://github.com/dsccommunity/AzureDevOpsDsc/issues/18))
  - Increased Azure DevOps, API timeout to 5 minutes to allow for busy/slow API
    operations ([issue #25](https://github.com/dsccommunity/AzureDevOpsDsc/issues/25)).
  - Updated contextual help ([issue #5](https://github.com/dsccommunity/AzureDevOpsDsc/issues/5)).
  - Removed `Classes` directory from being output in packaged module ([issue #10](https://github.com/dsccommunity/AzureDevOpsDsc/issues/10)).
  - Removed `Examples` directory from being output in packaged module ([issue #11](https://github.com/dsccommunity/AzureDevOpsDsc/issues/11)).
  - Moved ''Ensure'' and ''RequiredAction'' enums into ''Enum'' directory and out of
    ''prefix.ps1'' ([issue #12](https://github.com/dsccommunity/AzureDevOpsDsc/issues/12)).
  - Added pipeline support for publish markdown content to the GitHub repository
    wiki ([issue #15](https://github.com/dsccommunity/AzureDevOpsDsc/issues/15)).
    This will publish the markdown documentation that is generated by the build pipeline.
  - Added new source folder `WikiSource`. Every markdown file in the folder
    `WikiSource` will be published to the GitHub repository wiki. The markdown
    file `Home.md` will be updated with the correct module version on each
    publish to gallery (including preview).
  - CodeCov integration.
- Added Resources:
  - AzDoGroupPermission
  - AzDoOrganizationGroup
  - AzDoProjectGroup
  - AzDoGroupMember
  - AzDoGitRepository
  - AzDoGitPermission
  - AzDoTeamSettings
  - AzDoArtifactFeedSettings
  - AzDoArtifactFeedView
  - AzDoProcess
  - AzDoProcessPermission
  - AzDoAgentPool
  - AzDoAgentPoolPermission
  - AzDoAgentQueue
  - AzDoAreaNodes
  - AzDoAreaPermission
  - AzDoArtifactFeed
  - AzDoArtifactFeedPermission
  - AzDoAuditStream
  - AzDoBranchPolicy
  - AzDoCheckConfiguration
  - AzDoDeploymentGroup
  - AzDoEnvironmentApproval
  - AzDoEnvironmentPermission
  - AzDoExtension
  - AzDoIterationNodes
  - AzDoIterationPermission
  - AzDoNotificationSubscription
  - AzDoOrganizationSettings
  - AzDoPipeline
  - AzDoPipelineEnvironment
  - AzDoPipelinePermission
  - AzDoProject
  - AzDoProjectPermission
  - AzDoProjectServices
  - AzDoRepositorySettings
  - AzDoSecurityNamespacePermission
  - AzDoServiceConnection
  - AzDoServiceConnectionPermission
  - AzDoTaskGroup
  - AzDoTeam
  - AzDoTeamMember
  - AzDoVariableGroup
  - AzDoVariableGroupPermission
  - AzDoWIPTags
  - AzDoWiki
  - AzDoUserEntitlement
  - AzDoServiceHook
  - AzDoPipelineSettings
- AzureDevOpsDsc.Common
  - Added New-AzDoAuthenticationProvider. This is invoked prior to the resource invocation.
  - Added ''wrapper'' functionality around the [Azure DevOps REST API](https://docs.microsoft.com/en-us/rest/api/azure/devops/)
  - Added Supporting Functions for Azure Managed Identity.
- Added Unit Testing to AzureDevOpsDsc.Common
 
 
### Changed
 
- AzureDevOpsDscNative
  - Made the integration test suite a hard release gate. `publish.yml` is now
    split i'


        } # End of PSData hashtable

    } # End of PrivateData hashtable
}