powershell CI workflow windows #27
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "powershell CI workflow windows" | |
on: | |
push: | |
branches: [ main ] | |
schedule: | |
- cron: '0 0 1 * *' ##execution of a task in the first minute of the month | |
jobs: | |
windows-latest-pwsh-scripts: | |
name: "pwsh scripts - windows-latest Microsoft Windows Server 2019 Datacenter" | |
runs-on: windows-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 | |
- name: "powershell version" | |
run: $PSVersionTable | |
- name: "Install PSScriptAnalyzer module" | |
shell: pwsh | |
run: | | |
Set-PSRepository PSGallery -InstallationPolicy Trusted | |
Install-Module PSScriptAnalyzer -ErrorAction Stop | |
- name: "Lint with PSScriptAnalyzer" | |
shell: pwsh | |
run: | | |
Write-Host $(Join-Path -Path $(Get-Location) -ChildPath "\scripts\*.ps1") | |
$workdir = $(Join-Path -Path $(Get-Location) -ChildPath "\scripts\*.ps1") | |
Write-Host $workdir | |
Invoke-ScriptAnalyzer -Path $workdir -Recurse -Outvariable issues | |
$errors = $issues.Where({$_.Severity -eq 'Error'}) | |
$warnings = $issues.Where({$_.Severity -eq 'Warning'}) | |
if ($errors) { | |
Write-Error "There were $($errors.Count) errors and $($warnings.Count) warnings total." -ErrorAction Stop | |
} else { | |
Write-Output "There were $($errors.Count) errors and $($warnings.Count) warnings total." | |
} | |
- name: "sysinternals - silent install" | |
run: .\scripts\Install_Sysinternals.ps1 | |
shell: pwsh | |
- name: "PowerCLI - silent install" | |
run: .\scripts\Install_PowerCLI_Powershellgallery.ps1 | |
shell: pwsh | |
- name: "silent install firefox" | |
run: .\scripts\Install_FireFox.ps1 | |
shell: pwsh | |
- name: "test verbose" | |
run: .\scripts\Test_Verbose.ps1 | |
shell: pwsh | |
- name: "windows version" | |
run: .\scripts\Windows_Version.ps1 | |
shell: pwsh | |
# https://docs.github.com/en/free-pro-team@latest/actions/guides/building-and-testing-powershell | |
pester-test: | |
name: "Test PowerShell windows latest" | |
runs-on: windows-latest | |
steps: | |
- name: "Check out repository code" | |
uses: actions/checkout@v2 | |
- name: "powershell version" | |
run: $PSVersionTable | |
- name: "Perform a Pester test from the Tests.ps1 file" | |
shell: pwsh | |
run: | | |
Invoke-Pester Unit.Tests.ps1 -Passthru | |
# https://docs.github.com/en/free-pro-team@latest/actions/guides/building-and-testing-powershell#packaging-workflow-data-as-artifacts | |
upload-pester-results: | |
name: "Run Pester and upload results windows latest" | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "powershell version" | |
run: $PSVersionTable | |
- name: "Test with Pester" | |
shell: pwsh | |
run: Invoke-Pester Unit.Tests.ps1 -Passthru | Export-CliXml -Path Unit.Tests.xml | |
- name: "Upload test results" | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ubuntu-Unit-Tests | |
path: Unit.Tests.xml | |
if: ${{ always() }} | |
install-dependencies: | |
name: "Install dependencies windows latest" | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "powershell version" | |
run: $PSVersionTable | |
- name: Install from PSGallery | |
shell: pwsh | |
run: | | |
Set-PSRepository PSGallery -InstallationPolicy Trusted | |
Install-Module SqlServer, PSScriptAnalyzer | |
# https://docs.github.com/en/free-pro-team@latest/actions/guides/building-and-testing-powershell | |
lint-with-PSScriptAnalyzer: | |
name: "Install and run PSScriptAnalyzer windows latest" | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: "powershell version" | |
run: $PSVersionTable | |
- name: "Install PSScriptAnalyzer module" | |
shell: pwsh | |
run: | | |
Set-PSRepository PSGallery -InstallationPolicy Trusted | |
Install-Module PSScriptAnalyzer -ErrorAction Stop | |
- name: "Lint with PSScriptAnalyzer" | |
shell: pwsh | |
run: | | |
Invoke-ScriptAnalyzer -Path *.ps1 -Recurse -Outvariable issues | |
$errors = $issues.Where({$_.Severity -eq 'Error'}) | |
$warnings = $issues.Where({$_.Severity -eq 'Warning'}) | |
if ($errors) { | |
Write-Error "There were $($errors.Count) errors and $($warnings.Count) warnings total." -ErrorAction Stop | |
} else { | |
Write-Output "There were $($errors.Count) errors and $($warnings.Count) warnings total." | |
} | |
windows-latest-PSScriptAnalyzer-build: | |
name: "build from source - windows-latest Microsoft Windows Server 2019 Datacenter" | |
runs-on: windows-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 | |
- name: "powershell version" | |
run: $PSVersionTable | |
# https://github.com/PowerShell/PSScriptAnalyzer#usage | |
- name: "git clone PSScriptAnalyzer module" | |
shell: pwsh | |
run: | | |
$PSVersionTable | |
git clone https://github.com/PowerShell/PSScriptAnalyzer | |
cd PSScriptAnalyzer | |
.\build.ps1 -PSVersion 7 | |
.\build.ps1 -Documentation #Rebuild documentation since it gets built automatically only the first time | |
Get-ScriptAnalyzerRule #confirm installation | |