Merge pull request #587 from aaronparker/development #37
This file contains 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: 'Validate main branch' | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
on: | |
workflow_dispatch: | |
push: | |
branches: [ "main" ] | |
paths: | |
- 'Evergreen/**.ps1' | |
- 'Evergreen/**.psm1' | |
jobs: | |
psscriptanalyzer: | |
permissions: | |
contents: read # for actions/checkout to fetch code | |
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results | |
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status | |
name: Run PSScriptAnalyzer | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Run PSScriptAnalyzer (main push) | |
uses: microsoft/psscriptanalyzer-action@6b2948b1944407914a58661c49941824d149734f | |
with: | |
path: "./Evergreen" | |
recurse: true | |
output: results.sarif | |
# Upload the SARIF file generated in the previous step | |
- name: Upload SARIF results file | |
uses: github/codeql-action/upload-sarif@v2 | |
with: | |
sarif_file: results.sarif | |
pestertest5: | |
name: "Run Pester tests on Windows PowerShell (main push)" | |
needs: psscriptanalyzer | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Pester tests | |
shell: powershell | |
working-directory: "${{ github.workspace }}" | |
run: | | |
.\tests\Install-Pester.ps1 | |
Import-Module -Name "Pester" -Force -ErrorAction "Stop" | |
Import-Module -Name "$env:GITHUB_WORKSPACE\Evergreen" -Force | |
$Config = [PesterConfiguration]::Default | |
$Config.Run.Path = "$env:GITHUB_WORKSPACE\tests" | |
$Config.Run.PassThru = $true | |
$Config.CodeCoverage.Enabled = $true | |
$Config.CodeCoverage.Path = "$env:GITHUB_WORKSPACE\Evergreen" | |
$Config.CodeCoverage.OutputFormat = "JaCoCo" | |
$Config.CodeCoverage.OutputPath = "$env:GITHUB_WORKSPACE\CodeCoverage.xml" | |
$Config.Output.Verbosity = "Detailed" | |
$Config.TestResult.Enabled = $true | |
$Config.TestResult.OutputFormat = "NUnitXml" | |
$Config.TestResult.OutputPath = "$env:GITHUB_WORKSPACE\tests\TestResults.xml" | |
Invoke-Pester -Configuration $Config | |
# Upload test results | |
- name: Upload Pester test results | |
uses: actions/upload-artifact@v3 | |
if: always() | |
with: | |
name: test-results | |
path: "${{ github.workspace }}\\tests\\TestResults.xml" | |
- name: Upload code coverage results | |
uses: actions/upload-artifact@v3 | |
if: always() | |
with: | |
name: codecov-results | |
path: "${{ github.workspace }}\\CodeCoverage.xml" | |
# pestertest7: | |
# name: "Run Pester tests on PowerShell Core (main push)" | |
# needs: psscriptanalyzer | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Install module DnsClient-PS | |
# shell: pwsh | |
# working-directory: "${{ github.workspace }}" | |
# run: | | |
# [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 | |
# Install-PackageProvider -Name "NuGet" -MinimumVersion "2.8.5.208" -Force -ErrorAction "SilentlyContinue" | |
# Install-PackageProvider -Name "PowerShellGet" -MinimumVersion "2.2.5" -Force -ErrorAction "SilentlyContinue" | |
# Set-PSRepository -Name "PSGallery" -InstallationPolicy "Trusted" -ErrorAction "SilentlyContinue" | |
# $params = @{ | |
# Name = "DnsClient-PS" | |
# SkipPublisherCheck = $true | |
# Force = $true | |
# ErrorAction = "Stop" | |
# } | |
# Install-Module @params | |
# - name: Pester tests | |
# shell: pwsh | |
# working-directory: "${{ github.workspace }}" | |
# run: | | |
# [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 | |
# Install-PackageProvider -Name "NuGet" -MinimumVersion "2.8.5.208" -Force -ErrorAction "SilentlyContinue" | |
# Install-PackageProvider -Name "PowerShellGet" -MinimumVersion "2.2.5" -Force -ErrorAction "SilentlyContinue" | |
# Set-PSRepository -Name "PSGallery" -InstallationPolicy "Trusted" -ErrorAction "SilentlyContinue" | |
# $params = @{ | |
# Name = "Pester" | |
# SkipPublisherCheck = $true | |
# ErrorAction = "Stop" | |
# } | |
# Install-Module @params | |
# Import-Module -Name "Pester" -Force | |
# Import-Module -Name "$env:GITHUB_WORKSPACE/Evergreen" | |
# $Config = [PesterConfiguration]::Default | |
# $Config.Run.Path = "$env:GITHUB_WORKSPACE/tests" | |
# $Config.Run.PassThru = $true | |
# $Config.CodeCoverage.Enabled = $true | |
# $Config.CodeCoverage.Path = "$env:GITHUB_WORKSPACE/Evergreen" | |
# $Config.CodeCoverage.OutputFormat = "JaCoCo" | |
# $Config.CodeCoverage.OutputPath = "$env:GITHUB_WORKSPACE/CodeCoverage7.xml" | |
# $Config.Output.Verbosity = "Detailed" | |
# $Config.TestResult.Enabled = $true | |
# $Config.TestResult.OutputFormat = "NUnitXml" | |
# $Config.TestResult.OutputPath = "$env:GITHUB_WORKSPACE/tests/TestResults7.xml" | |
# Invoke-Pester -Configuration $Config | |
# # Upload test results | |
# - name: Upload Pester test results | |
# uses: actions/upload-artifact@v3 | |
# if: always() | |
# with: | |
# name: test-results | |
# path: "${{ github.workspace }}//tests//TestResults7.xml" | |
# - name: Upload code coverage results | |
# uses: actions/upload-artifact@v3 | |
# if: always() | |
# with: | |
# name: codecov-results | |
# path: "${{ github.workspace }}//CodeCoverage7.xml" | |
publish-test-results: | |
name: "Publish Tests Results" | |
needs: [ "pestertest5"] | |
runs-on: ubuntu-latest | |
if: always() | |
permissions: | |
checks: write | |
# only needed unless run with comment_mode: off | |
pull-requests: write | |
steps: | |
- name: Download Pester Test Result Artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: test-results | |
path: test-results | |
- name: Publish Pester Test Results | |
uses: EnricoMi/publish-unit-test-result-action@v2 | |
with: | |
nunit_files: "test-results/**/*.xml" | |
- name: Download Code Coverage Result Artifacts | |
uses: actions/download-artifact@v3 | |
if: always() | |
with: | |
name: codecov-results | |
path: codecov-results | |
- name: Upload to Codecov | |
id: codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
files: "codecov-results/**/*.xml" | |
verbose: true |