Skip to content

powershell CI workflow windows #27

powershell CI workflow windows

powershell CI workflow windows #27

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