diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fbc8fb8a..98f45405 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -279,6 +279,15 @@ jobs: throw "Staged modules path not found: $modulesPath" } + # Ensure required modules are discoverable during Test-ModuleManifest/Publish-Module. + # Save original PSModulePath to restore before install/import verification. + $originalPSModulePath = $env:PSModulePath + $pathSeparator = [System.IO.Path]::PathSeparator + $modulePathEntries = $env:PSModulePath -split [regex]::Escape($pathSeparator) + if ($modulePathEntries -notcontains $modulesPath) { + $env:PSModulePath = $modulesPath + $pathSeparator + $env:PSModulePath + } + $repoPath = Join-Path $env:RUNNER_TEMP 'psrepo' New-Item -ItemType Directory -Path $repoPath -Force | Out-Null @@ -302,6 +311,10 @@ jobs: Write-Host " ✓ Published $moduleName" } + # Restore original PSModulePath before install/import verification + # to ensure Import-Module resolves the installed package, not the staged build. + $env:PSModulePath = $originalPSModulePath + # Test that IdLE can be installed and imports correctly Write-Host "`nInstalling IdLE from LocalRepo..." Install-Module -Name 'IdLE' -Repository 'LocalRepo' -Scope CurrentUser -Force -AllowClobber -ErrorAction Stop @@ -375,6 +388,13 @@ jobs: throw "Staged modules path not found: $modulesPath" } + # Ensure required modules are discoverable during Test-ModuleManifest/Publish-Module. + $pathSeparator = [System.IO.Path]::PathSeparator + $modulePathEntries = $env:PSModulePath -split [regex]::Escape($pathSeparator) + if ($modulePathEntries -notcontains $modulesPath) { + $env:PSModulePath = $modulesPath + $pathSeparator + $env:PSModulePath + } + # Load publish order from configuration $configPath = Join-Path $env:GITHUB_WORKSPACE 'tools/ModulePublishOrder.psd1' $config = Import-PowerShellDataFile -LiteralPath $configPath diff --git a/src/IdLE.Core/IdLE.Core.psd1 b/src/IdLE.Core/IdLE.Core.psd1 index 366a2845..6cdec2a2 100644 --- a/src/IdLE.Core/IdLE.Core.psd1 +++ b/src/IdLE.Core/IdLE.Core.psd1 @@ -6,6 +6,7 @@ Copyright = '(c) Matthias Fleschuetz. All rights reserved.' Description = 'IdLE Core engine: domain model, workflow loading/validation, plan builder and execution pipeline.' PowerShellVersion = '7.0' + HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' FunctionsToExport = @( 'New-IdleLifecycleRequestObject', @@ -26,7 +27,6 @@ LicenseUri = 'https://www.apache.org/licenses/LICENSE-2.0' ProjectUri = 'https://github.com/blindzero/IdentityLifecycleEngine' ReleaseNotes = 'https://github.com/blindzero/IdentityLifecycleEngine/releases' - HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' ContactEmail = '13959569+blindzero@users.noreply.github.com' RepositoryUrl = 'https://github.com/blindzero/IdentityLifecycleEngine' BugTrackerUrl = 'https://github.com/blindzero/IdentityLifecycleEngine/issues' diff --git a/src/IdLE.Provider.AD/IdLE.Provider.AD.psd1 b/src/IdLE.Provider.AD/IdLE.Provider.AD.psd1 index b73b3940..ef8fae7f 100644 --- a/src/IdLE.Provider.AD/IdLE.Provider.AD.psd1 +++ b/src/IdLE.Provider.AD/IdLE.Provider.AD.psd1 @@ -6,6 +6,7 @@ Copyright = '(c) Matthias Fleschuetz. All rights reserved.' Description = 'Active Directory (on-prem) provider implementation for IdLE (Windows-only, requires RSAT/ActiveDirectory module).' PowerShellVersion = '7.0' + HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' FunctionsToExport = @( 'New-IdleADIdentityProvider' @@ -17,7 +18,6 @@ LicenseUri = 'https://www.apache.org/licenses/LICENSE-2.0' ProjectUri = 'https://github.com/blindzero/IdentityLifecycleEngine' ReleaseNotes = 'https://github.com/blindzero/IdentityLifecycleEngine/releases' - HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' ContactEmail = '13959569+blindzero@users.noreply.github.com' RepositoryUrl = 'https://github.com/blindzero/IdentityLifecycleEngine' BugTrackerUrl = 'https://github.com/blindzero/IdentityLifecycleEngine/issues' diff --git a/src/IdLE.Provider.DirectorySync.EntraConnect/IdLE.Provider.DirectorySync.EntraConnect.psd1 b/src/IdLE.Provider.DirectorySync.EntraConnect/IdLE.Provider.DirectorySync.EntraConnect.psd1 index 2e256825..446be13e 100644 --- a/src/IdLE.Provider.DirectorySync.EntraConnect/IdLE.Provider.DirectorySync.EntraConnect.psd1 +++ b/src/IdLE.Provider.DirectorySync.EntraConnect/IdLE.Provider.DirectorySync.EntraConnect.psd1 @@ -6,6 +6,7 @@ Copyright = '(c) Matthias Fleschuetz. All rights reserved.' Description = 'Entra Connect directory sync provider for IdLE (remote execution).' PowerShellVersion = '7.0' + HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' FunctionsToExport = @( 'New-IdleEntraConnectDirectorySyncProvider' @@ -17,7 +18,6 @@ LicenseUri = 'https://www.apache.org/licenses/LICENSE-2.0' ProjectUri = 'https://github.com/blindzero/IdentityLifecycleEngine' ReleaseNotes = 'https://github.com/blindzero/IdentityLifecycleEngine/releases' - HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' ContactEmail = '13959569+blindzero@users.noreply.github.com' RepositoryUrl = 'https://github.com/blindzero/IdentityLifecycleEngine' BugTrackerUrl = 'https://github.com/blindzero/IdentityLifecycleEngine/issues' diff --git a/src/IdLE.Provider.EntraID/IdLE.Provider.EntraID.psd1 b/src/IdLE.Provider.EntraID/IdLE.Provider.EntraID.psd1 index 7f4ca6e7..b9418b64 100644 --- a/src/IdLE.Provider.EntraID/IdLE.Provider.EntraID.psd1 +++ b/src/IdLE.Provider.EntraID/IdLE.Provider.EntraID.psd1 @@ -6,6 +6,7 @@ Copyright = '(c) Matthias Fleschuetz. All rights reserved.' Description = 'Microsoft Entra ID (Azure AD) provider implementation for IdLE using Microsoft Graph API.' PowerShellVersion = '7.0' + HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' FunctionsToExport = @( 'New-IdleEntraIDIdentityProvider' @@ -17,7 +18,6 @@ LicenseUri = 'https://www.apache.org/licenses/LICENSE-2.0' ProjectUri = 'https://github.com/blindzero/IdentityLifecycleEngine' ReleaseNotes = 'https://github.com/blindzero/IdentityLifecycleEngine/releases' - HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' ContactEmail = '13959569+blindzero@users.noreply.github.com' RepositoryUrl = 'https://github.com/blindzero/IdentityLifecycleEngine' BugTrackerUrl = 'https://github.com/blindzero/IdentityLifecycleEngine/issues' diff --git a/src/IdLE.Provider.ExchangeOnline/IdLE.Provider.ExchangeOnline.psd1 b/src/IdLE.Provider.ExchangeOnline/IdLE.Provider.ExchangeOnline.psd1 index be6e968b..1bf4b53b 100644 --- a/src/IdLE.Provider.ExchangeOnline/IdLE.Provider.ExchangeOnline.psd1 +++ b/src/IdLE.Provider.ExchangeOnline/IdLE.Provider.ExchangeOnline.psd1 @@ -6,6 +6,7 @@ Copyright = '(c) Matthias Fleschuetz. All rights reserved.' Description = 'Exchange Online mailbox provider implementation for IdLE (requires ExchangeOnlineManagement module).' PowerShellVersion = '7.0' + HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' FunctionsToExport = @( 'New-IdleExchangeOnlineProvider' @@ -17,7 +18,6 @@ LicenseUri = 'https://www.apache.org/licenses/LICENSE-2.0' ProjectUri = 'https://github.com/blindzero/IdentityLifecycleEngine' ReleaseNotes = 'https://github.com/blindzero/IdentityLifecycleEngine/releases' - HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' ContactEmail = '13959569+blindzero@users.noreply.github.com' RepositoryUrl = 'https://github.com/blindzero/IdentityLifecycleEngine' BugTrackerUrl = 'https://github.com/blindzero/IdentityLifecycleEngine/issues' diff --git a/src/IdLE.Provider.Mock/IdLE.Provider.Mock.psd1 b/src/IdLE.Provider.Mock/IdLE.Provider.Mock.psd1 index e97ea3b7..67b22899 100644 --- a/src/IdLE.Provider.Mock/IdLE.Provider.Mock.psd1 +++ b/src/IdLE.Provider.Mock/IdLE.Provider.Mock.psd1 @@ -6,6 +6,7 @@ Copyright = '(c) Matthias Fleschuetz. All rights reserved.' Description = 'Mock provider implementation for IdLE (in-memory, deterministic).' PowerShellVersion = '7.0' + HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' FunctionsToExport = @( 'New-IdleMockIdentityProvider' @@ -17,7 +18,6 @@ LicenseUri = 'https://www.apache.org/licenses/LICENSE-2.0' ProjectUri = 'https://github.com/blindzero/IdentityLifecycleEngine' ReleaseNotes = 'https://github.com/blindzero/IdentityLifecycleEngine/releases' - HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' ContactEmail = '13959569+blindzero@users.noreply.github.com' RepositoryUrl = 'https://github.com/blindzero/IdentityLifecycleEngine' BugTrackerUrl = 'https://github.com/blindzero/IdentityLifecycleEngine/issues' diff --git a/src/IdLE.Steps.Common/IdLE.Steps.Common.psd1 b/src/IdLE.Steps.Common/IdLE.Steps.Common.psd1 index bb69fac3..c8b3102a 100644 --- a/src/IdLE.Steps.Common/IdLE.Steps.Common.psd1 +++ b/src/IdLE.Steps.Common/IdLE.Steps.Common.psd1 @@ -6,6 +6,7 @@ Copyright = '(c) Matthias Fleschuetz. All rights reserved.' Description = 'Common built-in steps for IdLE.' PowerShellVersion = '7.0' + HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' RequiredModules = @('IdLE.Core') @@ -27,7 +28,6 @@ LicenseUri = 'https://www.apache.org/licenses/LICENSE-2.0' ProjectUri = 'https://github.com/blindzero/IdentityLifecycleEngine' ReleaseNotes = 'https://github.com/blindzero/IdentityLifecycleEngine/releases' - HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' ContactEmail = '13959569+blindzero@users.noreply.github.com' RepositoryUrl = 'https://github.com/blindzero/IdentityLifecycleEngine' BugTrackerUrl = 'https://github.com/blindzero/IdentityLifecycleEngine/issues' diff --git a/src/IdLE.Steps.DirectorySync/IdLE.Steps.DirectorySync.psd1 b/src/IdLE.Steps.DirectorySync/IdLE.Steps.DirectorySync.psd1 index d03ff75e..6e637604 100644 --- a/src/IdLE.Steps.DirectorySync/IdLE.Steps.DirectorySync.psd1 +++ b/src/IdLE.Steps.DirectorySync/IdLE.Steps.DirectorySync.psd1 @@ -6,6 +6,7 @@ Copyright = '(c) Matthias Fleschuetz. All rights reserved.' Description = 'Generic directory sync steps for IdLE.' PowerShellVersion = '7.0' + HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' RequiredModules = @( 'IdLE.Core', @@ -23,7 +24,6 @@ LicenseUri = 'https://www.apache.org/licenses/LICENSE-2.0' ProjectUri = 'https://github.com/blindzero/IdentityLifecycleEngine' ReleaseNotes = 'https://github.com/blindzero/IdentityLifecycleEngine/releases' - HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' ContactEmail = '13959569+blindzero@users.noreply.github.com' RepositoryUrl = 'https://github.com/blindzero/IdentityLifecycleEngine' BugTrackerUrl = 'https://github.com/blindzero/IdentityLifecycleEngine/issues' diff --git a/src/IdLE.Steps.Mailbox/IdLE.Steps.Mailbox.psd1 b/src/IdLE.Steps.Mailbox/IdLE.Steps.Mailbox.psd1 index 647ddce9..130ccddc 100644 --- a/src/IdLE.Steps.Mailbox/IdLE.Steps.Mailbox.psd1 +++ b/src/IdLE.Steps.Mailbox/IdLE.Steps.Mailbox.psd1 @@ -6,6 +6,7 @@ Copyright = '(c) Matthias Fleschuetz. All rights reserved.' Description = 'Provider-agnostic mailbox step pack for IdLE.' PowerShellVersion = '7.0' + HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' RequiredModules = @('IdLE.Core', 'IdLE.Steps.Common') @@ -22,7 +23,6 @@ LicenseUri = 'https://www.apache.org/licenses/LICENSE-2.0' ProjectUri = 'https://github.com/blindzero/IdentityLifecycleEngine' ReleaseNotes = 'https://github.com/blindzero/IdentityLifecycleEngine/releases' - HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' ContactEmail = '13959569+blindzero@users.noreply.github.com' RepositoryUrl = 'https://github.com/blindzero/IdentityLifecycleEngine' BugTrackerUrl = 'https://github.com/blindzero/IdentityLifecycleEngine/issues' diff --git a/src/IdLE/IdLE.Init.ps1 b/src/IdLE/IdLE.Init.ps1 index 28e02679..d536e04b 100644 --- a/src/IdLE/IdLE.Init.ps1 +++ b/src/IdLE/IdLE.Init.ps1 @@ -36,7 +36,7 @@ if ($PSScriptRoot) { } } catch { # Non-fatal: path resolution can fail for invalid entries. - Write-Verbose "Skipping unresolved PSModulePath entry: $p" + Write-Verbose -Message "Skipping unresolved PSModulePath entry: $p" } } } diff --git a/src/IdLE/IdLE.psd1 b/src/IdLE/IdLE.psd1 index 344c02a5..f6b9deb5 100644 --- a/src/IdLE/IdLE.psd1 +++ b/src/IdLE/IdLE.psd1 @@ -6,6 +6,7 @@ Copyright = '(c) Matthias Fleschuetz. All rights reserved.' Description = 'IdentityLifecycleEngine (IdLE) meta-module. Imports IdLE.Core and optional packs.' PowerShellVersion = '7.0' + HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' # ScriptsToProcess runs before NestedModules are loaded # This script bootstraps PSModulePath for repo/zip layouts @@ -42,7 +43,6 @@ LicenseUri = 'https://www.apache.org/licenses/LICENSE-2.0' ProjectUri = 'https://github.com/blindzero/IdentityLifecycleEngine' ReleaseNotes = 'https://github.com/blindzero/IdentityLifecycleEngine/releases' - HelpInfoUri = 'https://blindzero.github.io/IdentityLifecycleEngine/' ContactEmail = '13959569+blindzero@users.noreply.github.com' RepositoryUrl = 'https://github.com/blindzero/IdentityLifecycleEngine' BugTrackerUrl = 'https://github.com/blindzero/IdentityLifecycleEngine/issues'