Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
7e83718
Add workflow powershell/Convert/ForConversion-Windows-CI
TravisEz13 Jan 29, 2025
306cfa1
Add composite action tools_releaseBuild_azureDevOps_templates_insert_…
TravisEz13 Jan 29, 2025
c3991de
Add composite action pipelines_templates_insert_nuget_config_azfeed
TravisEz13 Jan 29, 2025
1b1c38c
Add reusable workflow vsts_ci_templates_ci_build
TravisEz13 Jan 29, 2025
d42ffd4
Add reusable workflow vsts_ci_templates_windows_test
TravisEz13 Jan 29, 2025
ed2bd8b
Add reusable workflow vsts_ci_templates_verify_xunit
TravisEz13 Jan 29, 2025
4fef408
Rename and update Windows CI workflow
TravisEz13 Jan 29, 2025
11dae80
Update .github/workflows/windows-ci.yml
TravisEz13 Jan 29, 2025
a0acfb8
Update .github/workflows/windows-ci.yml
TravisEz13 Jan 29, 2025
05158fc
Update .github/actions/tools_releasebuild_azuredevops_templates_inser…
TravisEz13 Jan 29, 2025
fd3fc29
Update .github/actions/pipelines_templates_insert_nuget_config_azfeed…
TravisEz13 Jan 29, 2025
e900566
Update .github/workflows/vsts_ci_templates_verify_xunit.yml
TravisEz13 Jan 29, 2025
7464980
Update .github/workflows/vsts_ci_templates_windows_test.yml
TravisEz13 Jan 29, 2025
912f9cd
update templates
TravisEz13 Jan 29, 2025
b317017
Cleanup workflow
TravisEz13 Jan 29, 2025
8463238
translate workflows to composite actions
TravisEz13 Jan 29, 2025
1986b3a
move checkout before using composite actions
TravisEz13 Jan 29, 2025
d489c6e
Use upload action
TravisEz13 Jan 29, 2025
2e9d794
make the first line of each task indicate what the task does
TravisEz13 Jan 29, 2025
a747f40
fix the job name
TravisEz13 Jan 29, 2025
858da9f
create the artifact folder
TravisEz13 Jan 29, 2025
f27efac
remove use of github token
TravisEz13 Jan 29, 2025
041707e
add runname
TravisEz13 Jan 29, 2025
52b2b76
fix copy
TravisEz13 Jan 29, 2025
7b45615
switch to the github download action
TravisEz13 Jan 29, 2025
12a5686
reduce verbose writes
TravisEz13 Jan 29, 2025
ccfd7fb
remove dead code
TravisEz13 Jan 29, 2025
f2aa59b
fix capitalization
TravisEz13 Jan 29, 2025
eb0123c
publish the test results
TravisEz13 Jan 29, 2025
b24e5f5
Only publish test results as an artifact
TravisEz13 Jan 29, 2025
bf8d948
Add test reporter
TravisEz13 Jan 29, 2025
5360a8c
filter captures
TravisEz13 Jan 29, 2025
a452a80
delete rebase workflow
TravisEz13 Jan 29, 2025
54b785c
assign prs
TravisEz13 Jan 29, 2025
9f5a3b6
use the version of test-reporter from main
TravisEz13 Jan 30, 2025
34df279
revert this: comment out long test runs
TravisEz13 Jan 30, 2025
aeecb6b
skip test tools build for experimental feature testing
TravisEz13 Jan 30, 2025
c402163
add ignores
TravisEz13 Jan 30, 2025
cae902c
switch to junit
TravisEz13 Jan 30, 2025
1a32921
use junit
TravisEz13 Jan 30, 2025
e6895c0
Add logging
TravisEz13 Jan 30, 2025
784636d
Produce crtf json
TravisEz13 Jan 30, 2025
da5e07b
fix elevated path
TravisEz13 Jan 30, 2025
95fe4a9
fix path
TravisEz13 Jan 30, 2025
739cc78
correct ctrf path
TravisEz13 Jan 30, 2025
cbf89ef
fix path separators
TravisEz13 Jan 30, 2025
d586ea2
make sure all refs to the .ctrf folder are actually the same
TravisEz13 Jan 30, 2025
819edc4
fix variable
TravisEz13 Jan 30, 2025
bf34b56
try to fix paths
TravisEz13 Jan 31, 2025
d1d214c
github-test-reporter only takes / as directory separators
TravisEz13 Jan 31, 2025
5d8dcca
remove unused workflow
TravisEz13 Jan 31, 2025
74a42dc
make it fail on failure
TravisEz13 Jan 31, 2025
5d179da
run unelevated tests too
TravisEz13 Jan 31, 2025
06b838a
update report format
TravisEz13 Jan 31, 2025
a96a570
try ai report
TravisEz13 Jan 31, 2025
96fb1e5
update report format
TravisEz13 Jan 31, 2025
1cd3922
Update .github/actions/build/ci/action.yml
TravisEz13 Jan 31, 2025
4907db0
Delete .github/actions/tools_releasebuild_azuredevops_templates_inser…
TravisEz13 Jan 31, 2025
d4fe4d4
Delete .github/actions/pipelines_templates_insert_nuget_config_azfeed…
TravisEz13 Jan 31, 2025
45d4f78
Delete results2.xml
TravisEz13 Jan 31, 2025
34d52c9
Delete results.xml
TravisEz13 Jan 31, 2025
f2e9acc
Update .gitignore
TravisEz13 Jan 31, 2025
056b194
Update .gitignore
TravisEz13 Jan 31, 2025
6e0678a
Merge branch 'master' into convert-powershell-convert-forconversion-w…
TravisEz13 Jan 31, 2025
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

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/checkout@v4.1.0
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/checkout@v4.1.0
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/checkout@v4.1.0
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/checkout@v4.1.0
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/checkout@v4.1.0
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/checkout@v4.1.0
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