diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 798c15ea07..ffc0a643a0 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -47,7 +47,10 @@ jobs: - name: Install dependencies shell: pwsh timeout-minutes: 3 - run: ./scripts/pipeline-deps.ps1 + run: | + ./scripts/pipeline-deps.ps1 + Import-Module ./scripts/dependencies.psm1 -Force + Install-Dependencies -Dev -Repository 'PSGallery' -TrustRepository - name: Build module shell: pwsh @@ -135,13 +138,19 @@ jobs: name: Install dependencies (PowerShell) shell: pwsh timeout-minutes: 3 - run: ./scripts/pipeline-deps.ps1 + run: | + ./scripts/pipeline-deps.ps1 + Import-Module ./scripts/dependencies.psm1 -Force + Install-Dependencies -Dev -Repository 'PSGallery' -TrustRepository - if: ${{ matrix.shell == 'powershell' }} name: Install dependencies (Windows PowerShell) shell: powershell timeout-minutes: 3 - run: ./scripts/pipeline-deps.ps1 + run: | + ./scripts/pipeline-deps.ps1 + Import-Module ./scripts/dependencies.psm1 -Force + Install-Dependencies -Dev -Repository 'PSGallery' -TrustRepository - name: Download module uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 diff --git a/scripts/dependencies.psm1 b/scripts/dependencies.psm1 index 5e230e8dfa..78fa90a86f 100644 --- a/scripts/dependencies.psm1 +++ b/scripts/dependencies.psm1 @@ -52,13 +52,16 @@ function Install-Dependencies { [String]$Repository = 'PSGallery', [Parameter(Mandatory = $False)] - [Switch]$Dev + [Switch]$Dev, + + [Parameter(Mandatory = $False)] + [Switch]$TrustRepository ) process { $modules = Get-Content -Path $Path -Raw | ConvertFrom-Json; - InstallVersion $modules.dependencies -Repository $Repository; + InstallVersion $modules.dependencies -Repository $Repository -TrustRepository:$TrustRepository; if ($Dev) { - InstallVersion $modules.devDependencies -Repository $Repository -Dev; + InstallVersion $modules.devDependencies -Repository $Repository -Dev -TrustRepository:$TrustRepository; } } } @@ -98,9 +101,7 @@ function CheckVersion { Write-Host -Object "[$group] -- Checking $($module.Name)"; $installParams = @{} $installParams += $module.Value; - $installParams.MinimumVersion = $installParams.version; - $installParams.Remove('version'); - $available = @(Find-Module -Repository $Repository -Name $module.Name @installParams -ErrorAction Ignore); + $available = @(Find-PSResource -Repository $Repository -Name $module.Name @installParams -ErrorAction Ignore); foreach ($found in $available) { if (([Version]$found.Version) -gt ([Version]$module.Value.version)) { Write-Host -Object "[$group] -- Newer version found $($found.Version)"; @@ -127,7 +128,10 @@ function InstallVersion { [String]$Repository, [Parameter(Mandatory = $False)] - [Switch]$Dev + [Switch]$Dev, + + [Parameter(Mandatory = $False)] + [Switch]$TrustRepository ) begin { $group = 'Dependencies'; @@ -138,9 +142,11 @@ function InstallVersion { process { foreach ($module in $InputObject.PSObject.Properties.GetEnumerator()) { Write-Host -Object "[$group] -- Installing $($module.Name) v$($module.Value.version)"; - $installParams = @{ RequiredVersion = $module.Value.version }; - if ($Null -eq (Get-InstalledModule -Name $module.Name @installParams -ErrorAction Ignore)) { - Install-Module -Name $module.Name @installParams -Force -Repository $Repository; + $installParams = @{ Version = $module.Value.version }; + if ($Null -eq (Get-PSResource -Name $module.Name @installParams -ErrorAction Ignore)) { + Install-PSResource -Name $module.Name @installParams -Repository $Repository -TrustRepository:$TrustRepository; + } else { + Write-Verbose -Message "[$group] -- $($module.Name) v$($module.Value.version) already installed."; } } } diff --git a/scripts/pipeline-deps.ps1 b/scripts/pipeline-deps.ps1 index 5909c2531c..1d809ad4a7 100644 --- a/scripts/pipeline-deps.ps1 +++ b/scripts/pipeline-deps.ps1 @@ -20,3 +20,7 @@ if ($Null -eq (Get-InstalledModule -Name PowerShellGet -MinimumVersion 2.2.1 -Er if ($Null -eq (Get-InstalledModule -Name InvokeBuild -MinimumVersion 5.4.0 -ErrorAction Ignore)) { Install-Module InvokeBuild -MinimumVersion 5.4.0 -Scope CurrentUser -Force; } + +if ($Null -eq (Get-InstalledModule -Name Microsoft.PowerShell.PSResourceGet -MinimumVersion 1.1.1 -ErrorAction Ignore)) { + Install-Module Microsoft.PowerShell.PSResourceGet -MinimumVersion 1.1.1 -Scope CurrentUser -Force; +}