diff --git a/.gitea/workflows/publish-psgallery.yml b/.gitea/workflows/publish-psgallery.yml index bb33266..3db6610 100644 --- a/.gitea/workflows/publish-psgallery.yml +++ b/.gitea/workflows/publish-psgallery.yml @@ -20,10 +20,48 @@ jobs: with: dotnet-version: '8.0.x' - - name: Build and test module + - name: Install PowerShell 7 (if not present) + shell: bash + run: | + set -euo pipefail + if command -v pwsh >/dev/null 2>&1; then + echo "pwsh already installed: $(pwsh --version)" + exit 0 + fi + + sudo apt-get update + sudo apt-get install -y --no-install-recommends wget ca-certificates apt-transport-https gnupg + + source /etc/os-release + wget -q "https://packages.microsoft.com/config/ubuntu/${VERSION_ID}/packages-microsoft-prod.deb" -O /tmp/ms-prod.deb + sudo dpkg -i /tmp/ms-prod.deb + rm -f /tmp/ms-prod.deb + + sudo apt-get update + sudo apt-get install -y powershell + pwsh --version + + - name: Bootstrap PowerShellGet / NuGet provider shell: pwsh run: | - ./build.ps1 -RunTests + $ErrorActionPreference = 'Stop' + Set-PSRepository -Name PSGallery -InstallationPolicy Trusted + if (-not (Get-PackageProvider -Name NuGet -ListAvailable -ErrorAction SilentlyContinue)) { + Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force -Scope CurrentUser | Out-Null + } + Get-PackageProvider -Name NuGet | Format-Table Name,Version + + - name: Build and test module + shell: pwsh + run: ./build.ps1 -RunTests + + - name: Validate module manifest + shell: pwsh + run: | + $ErrorActionPreference = 'Stop' + $manifestPath = Join-Path $PWD 'Module/PSInfisicalAPI/PSInfisicalAPI.psd1' + $manifest = Test-ModuleManifest -Path $manifestPath + Write-Host "Manifest OK: $($manifest.Name) $($manifest.Version)" - name: Verify PowerShell Gallery API key is configured shell: pwsh @@ -39,6 +77,7 @@ jobs: env: PSGALLERY_API_KEY: ${{ secrets.PSGALLERY_API_KEY }} run: | + $ErrorActionPreference = 'Stop' $moduleDir = Join-Path $PWD 'Module/PSInfisicalAPI' Write-Host "Publishing module from: $moduleDir" Publish-Module ` diff --git a/CHANGELOG.md b/CHANGELOG.md index 97db1a1..25eb16d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,11 +6,23 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) loos ## Unreleased +## 2026.06.02.1724 + +- Build produced from commit 5801b4774af5. + +## Unreleased (carried forward) + ## 2026.06.02.1648 - Build produced from commit 430e3a00c921. -## Unreleased (carried forward) +## Unreleased + +## 2026.06.02.1724 + +- Build produced from commit 5801b4774af5. + +## Unreleased (carried forward) (carried forward) ## 2026.06.02.1638 @@ -18,11 +30,23 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) loos ## Unreleased +## 2026.06.02.1724 + +- Build produced from commit 5801b4774af5. + +## Unreleased (carried forward) + ## 2026.06.02.1648 - Build produced from commit 430e3a00c921. -## Unreleased (carried forward) (carried forward) +## Unreleased + +## 2026.06.02.1724 + +- Build produced from commit 5801b4774af5. + +## Unreleased (carried forward) (carried forward) (carried forward) ## 2026.06.02.1611 @@ -30,11 +54,23 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) loos ## Unreleased +## 2026.06.02.1724 + +- Build produced from commit 5801b4774af5. + +## Unreleased (carried forward) + ## 2026.06.02.1648 - Build produced from commit 430e3a00c921. -## Unreleased (carried forward) +## Unreleased + +## 2026.06.02.1724 + +- Build produced from commit 5801b4774af5. + +## Unreleased (carried forward) (carried forward) ## 2026.06.02.1638 @@ -42,11 +78,23 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) loos ## Unreleased +## 2026.06.02.1724 + +- Build produced from commit 5801b4774af5. + +## Unreleased (carried forward) + ## 2026.06.02.1648 - Build produced from commit 430e3a00c921. -## Unreleased (carried forward) (carried forward) (carried forward) +## Unreleased + +## 2026.06.02.1724 + +- Build produced from commit 5801b4774af5. + +## Unreleased (carried forward) (carried forward) (carried forward) (carried forward) ### Added diff --git a/Module/PSInfisicalAPI/PSInfisicalAPI.psd1 b/Module/PSInfisicalAPI/PSInfisicalAPI.psd1 index 19a18ea..f69c71f 100644 --- a/Module/PSInfisicalAPI/PSInfisicalAPI.psd1 +++ b/Module/PSInfisicalAPI/PSInfisicalAPI.psd1 @@ -1,6 +1,6 @@ @{ RootModule = 'PSInfisicalAPI.psm1' - ModuleVersion = '2026.06.02.1648' + ModuleVersion = '2026.06.02.1724' GUID = 'b8a2f3d4-7c51-4d2f-9e6a-1f0c8b3d4e51' Author = 'Grace Solutions' CompanyName = 'Grace Solutions' @@ -27,7 +27,7 @@ LicenseUri = 'https://www.gnu.org/licenses/agpl-3.0.html' ProjectUri = 'https://prod.git.gracesolution.info/gsadmin/PSInfisicalAPI' ReleaseNotes = 'See CHANGELOG.md in the project repository for release history.' - CommitHash = '430e3a00c921' + CommitHash = '5801b4774af5' } } } \ No newline at end of file diff --git a/Module/PSInfisicalAPI/bin/PSInfisicalAPI.dll b/Module/PSInfisicalAPI/bin/PSInfisicalAPI.dll index aba2d23..82cda94 100644 Binary files a/Module/PSInfisicalAPI/bin/PSInfisicalAPI.dll and b/Module/PSInfisicalAPI/bin/PSInfisicalAPI.dll differ diff --git a/build.ps1 b/build.ps1 index 9fb8590..55575e4 100644 --- a/build.ps1 +++ b/build.ps1 @@ -149,15 +149,33 @@ function Invoke-DotNet { function Test-ModuleImports { param([System.IO.DirectoryInfo]$ModuleDirectory) - Write-Step "Validating module import" + Write-Step "Validating module import, manifest, and help" + $manifestPath = [System.IO.Path]::Combine($ModuleDirectory.FullName, 'PSInfisicalAPI.psd1') $script = @" `$ErrorActionPreference = 'Stop' + +`$manifest = Test-ModuleManifest -Path '$manifestPath' +if (`$null -eq `$manifest) { + throw "Test-ModuleManifest returned no result for '$manifestPath'." +} + Import-Module -Name '$($ModuleDirectory.FullName)' -Force + `$cmds = @('Connect-Infisical','Disconnect-Infisical','Get-InfisicalSecrets','Get-InfisicalSecret','ConvertTo-InfisicalSecretDictionary','Export-InfisicalSecrets') foreach (`$c in `$cmds) { if (-not (Get-Command -Name `$c -Module PSInfisicalAPI -ErrorAction SilentlyContinue)) { throw "Cmdlet not found: `$c" } + + `$help = Get-Help -Name `$c -ErrorAction SilentlyContinue + if (`$null -eq `$help) { + throw "Get-Help returned nothing for cmdlet: `$c" + } +} + +`$about = Get-Help -Name 'about_PSInfisicalAPI' -ErrorAction SilentlyContinue +if (`$null -eq `$about -or [string]::IsNullOrWhiteSpace((`$about | Out-String))) { + throw "Get-Help 'about_PSInfisicalAPI' returned no content. Ensure en-US/about_PSInfisicalAPI.help.txt is present." } "@ @@ -252,11 +270,7 @@ Write-Manifest -Path $manifestPath -ModuleVersion $buildVersion -CommitHash $com Update-Changelog -Version $buildVersion -CommitHash $commitHash -try { - Test-ModuleImports -ModuleDirectory $ModuleRoot -} catch { - Write-Warning "Module import validation reported: $($_.Exception.Message)" -} +Test-ModuleImports -ModuleDirectory $ModuleRoot if ($CreateRelease.IsPresent) { $releaseDir = [System.IO.DirectoryInfo][System.IO.Path]::Combine($ReleasesDir.FullName, $buildVersion)