Resources/GitHubActions/actions_bootstrap.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# Bootstrap dependencies # https://docs.microsoft.com/powershell/module/packagemanagement/get-packageprovider Get-PackageProvider -Name Nuget -ForceBootstrap | Out-Null # https://docs.microsoft.com/powershell/module/powershellget/set-psrepository Set-PSRepository -Name PSGallery -InstallationPolicy Trusted # List of PowerShell Modules required for the build $modulesToInstall = [System.Collections.ArrayList]::new() # https://github.com/pester/Pester $null = $modulesToInstall.Add(([PSCustomObject]@{ ModuleName = 'Pester' ModuleVersion = '4.10.1' })) # https://github.com/nightroman/Invoke-Build $null = $modulesToInstall.Add(([PSCustomObject]@{ ModuleName = 'InvokeBuild' ModuleVersion = '5.6.1' })) # https://github.com/PowerShell/PSScriptAnalyzer $null = $modulesToInstall.Add(([PSCustomObject]@{ ModuleName = 'PSScriptAnalyzer' ModuleVersion = '1.19.1' })) # https://github.com/PowerShell/platyPS # older version used due to: https://github.com/PowerShell/platyPS/issues/457 $null = $modulesToInstall.Add(([PSCustomObject]@{ ModuleName = 'platyPS' ModuleVersion = '0.12.0' })) <% If ($PLASTER_PARAM_VAULT -eq 'VAULT') { @' $null = $modulesToInstall.Add(([PSCustomObject]@{ ModuleName = 'Microsoft.PowerShell.SecretManagement' ModuleVersion = '0.5.3-preview4' })) '@ } %> 'Installing PowerShell Modules' foreach ($module in $modulesToInstall) { $installSplat = @{ Name = $module.ModuleName RequiredVersion = $module.ModuleVersion Repository = 'PSGallery' SkipPublisherCheck = $true Force = $true ErrorAction = 'Stop' } try { <% If ($PLASTER_PARAM_VAULT -eq 'VAULT') { @' if ($module.ModuleName -eq 'Microsoft.PowerShell.SecretManagement') { Install-Module @installSplat -AllowPrerelease } else { Install-Module @installSplat } '@ } else { @' Install-Module @installSplat '@ } %> Import-Module -Name $module.ModuleName -ErrorAction Stop ' - Successfully installed {0}' -f $module.ModuleName } catch { $message = 'Failed to install {0}' -f $module.ModuleName " - $message" throw } } |