Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions .github/actions/build/ci/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: CI Build
description: 'Builds PowerShell'
runs:
using: composite
steps:
- name: Capture Environment
if: success() || failure()
run: 'Get-ChildItem -Path env: | Out-String -width 9999 -Stream | write-Verbose -Verbose'
shell: pwsh
- name: Set Build Name for Non-PR
if: github.event_name != 'PullRequest'
run: Write-Host "##vso[build.updatebuildnumber]$env:BUILD_SOURCEBRANCHNAME-$env:BUILD_SOURCEVERSION-$((get-date).ToString("yyyyMMddhhmmss"))"
shell: pwsh
- name: Bootstrap
if: success()
run: |-
Write-Verbose -Verbose "Running Bootstrap..."
Import-Module .\tools\ci.psm1
Invoke-CIInstall -SkipUser
Write-Verbose -Verbose "Start Sync-PSTags"
Sync-PSTags -AddRemoteIfMissing
Write-Verbose -Verbose "End Sync-PSTags"
shell: pwsh
- name: Build
if: success()
run: |-
Write-Verbose -Verbose "Running Build..."
Import-Module .\tools\ci.psm1
Invoke-CIBuild
shell: pwsh
- name: xUnit Tests
if: success()
continue-on-error: true
run: |-
Write-Verbose -Verbose "Running xUnit tests..."
Import-Module .\tools\ci.psm1
Restore-PSOptions
Invoke-CIxUnit -SkipFailing
shell: pwsh
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: build
path: ${{ runner.workspace }}/build
- name: Upload xunit artifact
uses: actions/upload-artifact@v4
with:
name: testResults-xunit
path: ${{ runner.workspace }}/xunit
21 changes: 21 additions & 0 deletions .github/actions/test/verify_xunit/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: verify_xunit
description: 'Verify xUnit Results'

runs:
using: composite
steps:
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
path: "${{ github.workspace }}"
- name: Capture artifacts directory
continue-on-error: true
run: dir "${{ github.workspace }}\testResults-xunit\*" -Recurse
shell: pwsh
- name: Test
if: success()
run: |-
Import-Module .\tools\ci.psm1
$xUnitTestResultsFile = "${{ github.workspace }}\testResults-xunit\xUnitTestResults.xml"
Test-XUnitTestResults -TestResultsFile $xUnitTestResultsFile
shell: pwsh
107 changes: 107 additions & 0 deletions .github/actions/test/windows/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
name: windows_test
description: 'Test PowerShell on Windows'

inputs:
purpose:
required: false
default: ''
type: string
tagSet:
required: false
default: CI
type: string
ctrfFolder:
required: false
default: ctrf
type: string

runs:
using: composite
steps:
- name: Capture Environment
if: success() || failure()
run: 'Get-ChildItem -Path env: | Out-String -width 9999 -Stream | write-Verbose -Verbose'
shell: pwsh
- name: Download Build Artifacts
uses: actions/download-artifact@v4
with:
path: "${{ github.workspace }}"
- name: Capture Artifacts Directory
continue-on-error: true
run: Get-ChildItem "${{ github.workspace }}\build\*" -Recurse
shell: pwsh

- name: Bootstrap
shell: powershell
run: |-
# Remove "Program Files\dotnet" from the env variable PATH, so old SDKs won't affect us.
Write-Host "Old Path:"
Write-Host $env:Path
$dotnetPath = Join-Path $env:SystemDrive 'Program Files\dotnet'
$paths = $env:Path -split ";" | Where-Object { -not $_.StartsWith($dotnetPath) }
$env:Path = $paths -join ";"
Write-Host "New Path:"
Write-Host $env:Path
# Bootstrap
Import-Module .\tools\ci.psm1
Invoke-CIInstall

- name: Test
if: success()
run: |-
Import-Module .\build.psm1 -force
Start-PSBootstrap
Import-Module .\tools\ci.psm1
Restore-PSOptions -PSOptionsPath '${{ github.workspace }}\build\psoptions.json'
$options = (Get-PSOptions)
$path = split-path -path $options.Output
$rootPath = split-Path -path $path
Expand-Archive -Path '${{ github.workspace }}\build\build.zip' -DestinationPath $rootPath -Force
Invoke-CITest -Purpose '${{ inputs.purpose }}' -TagSet '${{ inputs.tagSet }}' -OutputFormat JUnitXml
shell: pwsh

- name: Convert JUnit to CTRF
run: |-
Get-ChildItem -Path "${{ runner.workspace }}/testResults/*.xml" -Recurse | ForEach-Object {
npx --yes junit-to-ctrf $_.FullName --output .\${{ inputs.ctrfFolder }}\$($_.BaseName).json --tool Pester --env 'Windows ${{ inputs.purpose }} ${{ inputs.tagSet }}'
}
shell: powershell

# this task only takes / as directory separators
- name: Publish Test Report
uses: ctrf-io/github-test-reporter@v1
with:
report-path: './${{ inputs.ctrfFolder }}/*.json'
exit-on-fail: true
summary-report: true
test-report: false
test-list-report: false
failed-report: false
fail-rate-report: false
flaky-report: false
flaky-rate-report: false
failed-folded-report: true
previous-results-report: false
ai-report: true
skipped-report: false
suite-folded-report: false
suite-list-report: false
pull-request-report: false
commit-report: false
custom-report: false

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

if: always()

- name: Upload testResults artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: junit-pester-${{ inputs.purpose }}-${{ inputs.tagSet }}
path: ${{ runner.workspace }}\testResults

- name: Upload ctrf artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: ctrf-pester-${{ inputs.purpose }}-${{ inputs.tagSet }}
path: ${{ inputs.ctrfFolder }}
3 changes: 2 additions & 1 deletion .github/workflows/AssignPrs.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Auto Assign PR Maintainer
on:
pull_request:
issues:
types: [opened, edited]
permissions:
contents: read
Expand All @@ -13,6 +13,7 @@ jobs:
pull-requests: write
steps:
- uses: wow-actions/auto-assign@67fafa03df61d7e5f201734a2fa60d1ab111880d # v3.0.2
if: github.event.issue.pull_request
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# using the `org/team_slug` or `/team_slug` syntax to add git team as reviewers
Expand Down
39 changes: 0 additions & 39 deletions .github/workflows/rebase.yml

This file was deleted.

124 changes: 124 additions & 0 deletions .github/workflows/windows-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
name: Windows-CI
on:
workflow_dispatch:
push:
branches:
- master
- release/**
- feature*
paths:
- "*"
- "!.vsts-ci/misc-analysis.yml"
- "!.github/ISSUE_TEMPLATE/*"
- "!.github/workflows/*"
- "!.dependabot/config.yml"
- "!test/perf/*"
- "!.pipelines/*"
pull_request:
branches:
- master
- release/**
- feature*
paths:
- ".vsts-ci/templates/*"
- ".vsts-ci/windows.yml"
- "*.props"
- build.psm1
- src/*
- test/*
- tools/buildCommon/*
- tools/ci.psm1
- tools/WindowsCI.psm1
- "!test/common/markdown/*"
- "!test/perf/*"
permissions:
contents: read

run-name: "${{ github.ref_name }} - ${{ github.run_number }}"

env:
DOTNET_CLI_TELEMETRY_OPTOUT: 1
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
GIT_CONFIG_PARAMETERS: "'core.autocrlf=false'"
NugetSecurityAnalysisWarningLevel: none
POWERSHELL_TELEMETRY_OPTOUT: 1
__SuppressAnsiEscapeSequences: 1
nugetMultiFeedWarnLevel: none
jobs:
ci_build:
name: Build PowerShell
runs-on: windows-latest
steps:
- name: checkout
uses: actions/[email protected]
with:
fetch-depth: 1000
- name: Build
uses: "./.github/actions/build/ci"
windows_test:
name: Windows Unelevated CI
needs: ci_build
runs-on: windows-latest
steps:
- name: checkout
uses: actions/[email protected]
with:
fetch-depth: 1000
- name: Windows Unelevated CI
uses: "./.github/actions/test/windows"
with:
purpose: UnelevatedPesterTests
tagSet: CI
windows_test_2:
name: Windows Elevated CI
needs: ci_build
runs-on: windows-latest
steps:
- name: checkout
uses: actions/[email protected]
with:
fetch-depth: 1000
- name: Windows Elevated CI
uses: "./.github/actions/test/windows"
with:
purpose: ElevatedPesterTests
tagSet: CI
windows_test_3:
name: Windows Unelevated Others
needs: ci_build
runs-on: windows-latest
steps:
- name: checkout
uses: actions/[email protected]
with:
fetch-depth: 1000
- name: Windows Unelevated Others
uses: "./.github/actions/test/windows"
with:
purpose: UnelevatedPesterTests
tagSet: Others
windows_test_4:
name: Windows Elevated Others
needs: ci_build
runs-on: windows-latest
steps:
- name: checkout
uses: actions/[email protected]
with:
fetch-depth: 1000
- name: Windows Elevated Others
uses: "./.github/actions/test/windows"
with:
purpose: ElevatedPesterTests
tagSet: Others
verify_xunit:
name: Verify xUnit test results
needs: ci_build
runs-on: windows-latest
steps:
- name: checkout
uses: actions/[email protected]
with:
fetch-depth: 1000
- name: Verify xUnit test results
uses: "./.github/actions/test/verify_xunit"
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -111,3 +111,10 @@ msbuild.binlog

# Ignore gzip files in the manpage folder
assets/manpage/*.gz

# Ignore files and folders generated by some gh cli extensions
tmp/*
.env.local

# Ignore CTRF report files
crtf/*
10 changes: 10 additions & 0 deletions build.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -1758,6 +1758,16 @@ function Publish-TestResults

$resolvedPath = (Resolve-Path -Path $Path).ProviderPath
Write-Host "##vso[artifact.upload containerfolder=testResults;artifactname=testResults]$resolvedPath"
} elseif ($env:GITHUB_WORKFLOW -and $env:RUNNER_WORKSPACE) {
# In GitHub Actions
$destinationPath = Join-Path -Path $env:RUNNER_WORKSPACE -ChildPath 'testResults'

# Create the folder if it does not exist
if (!(Test-Path -Path $destinationPath)) {
$null = New-Item -ItemType Directory -Path $destinationPath -Force
}

Copy-Item -Path $Path -Destination $destinationPath -Force -Verbose
}
}

Expand Down
Loading