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
88 changes: 88 additions & 0 deletions .github/actions/infrastructure/path-filters/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: Path Filters
description: 'Path Filters'
inputs:
GITHUB_TOKEN:
description: 'GitHub token'
required: true
outputs:
source:
description: 'Source code changes (composite of all changes)'
value: ${{ steps.filter.outputs.source }}
githubChanged:
description: 'GitHub workflow changes'
value: ${{ steps.filter.outputs.githubChanged }}
toolsChanged:
description: 'Tools changes'
value: ${{ steps.filter.outputs.toolsChanged }}
propsChanged:
description: 'Props changes'
value: ${{ steps.filter.outputs.propsChanged }}
testsChanged:
description: 'Tests changes'
value: ${{ steps.filter.outputs.testsChanged }}
mainSourceChanged:
description: 'Main source code changes (any changes in src/)'
value: ${{ steps.filter.outputs.mainSourceChanged }}
buildModuleChanged:
description: 'Build module changes'
value: ${{ steps.filter.outputs.buildModuleChanged }}
runs:
using: composite
steps:
- name: Check if GitHubWorkflowChanges is present
id: filter
uses: actions/[email protected]
with:
github-token: ${{ inputs.GITHUB_TOKEN }}
script: |
// Fetch the list of files changed in the PR
let files = [];
let page = 1;
let fetchedFiles;
do {
fetchedFiles = await github.rest.pulls.listFiles({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
per_page: 100,
page: page++
});
files = files.concat(fetchedFiles.data);
} while (fetchedFiles.data.length > 0);

const actionsChanged = files.some(file => file.filename.startsWith('.github/actions'));
const workflowsChanged = files.some(file => file.filename.startsWith('.github/workflows'));
const githubChanged = actionsChanged || workflowsChanged;

const toolsCiPsm1Changed = files.some(file => file.filename.startsWith('tools/ci.psm1'));
const toolsBuildCommonChanged = files.some(file => file.filename.startsWith('tools/buildCommon/'));
const toolsChanged = toolsCiPsm1Changed || toolsBuildCommonChanged;

const propsChanged = files.some(file => file.filename.endsWith('.props'));

const testsChanged = files.some(file => file.filename.startsWith('test/powershell/') || file.filename.startsWith('test/tools/') || file.filename.startsWith('test/xUnit/'));

const mainSourceChanged = files.some(file => file.filename.startsWith('src/'));

const buildModuleChanged = files.some(file => file.filename.startsWith('build.psm1'));

const source = mainSourceChanged || toolsChanged || githubChanged || propsChanged || testsChanged;

core.setOutput('toolsChanged', toolsChanged);
core.setOutput('githubChanged', githubChanged);
core.setOutput('propsChanged', propsChanged);
core.setOutput('testsChanged', testsChanged);
core.setOutput('mainSourceChanged', mainSourceChanged);
core.setOutput('buildModuleChanged', buildModuleChanged);
core.setOutput('source', source);

- name: Capture outputs
run: |
Write-Verbose -Verbose "source: ${{ steps.filter.outputs.source }}"
Write-Verbose -Verbose "github: ${{ steps.filter.outputs.githubChanged }}"
Write-Verbose -Verbose "tools: ${{ steps.filter.outputs.toolsChanged }}"
Write-Verbose -Verbose "props: ${{ steps.filter.outputs.propsChanged }}"
Write-Verbose -Verbose "tests: ${{ steps.filter.outputs.testsChanged }}"
Write-Verbose -Verbose "mainSource: ${{ steps.filter.outputs.mainSourceChanged }}"
Write-Verbose -Verbose "buildModule: ${{ steps.filter.outputs.buildModuleChanged }}"
shell: pwsh
27 changes: 22 additions & 5 deletions .github/actions/test/nix/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,26 +20,39 @@ runs:
steps:
- name: Capture Environment
if: success() || failure()
run: 'Get-ChildItem -Path env: | Out-String -width 9999 -Stream | write-Verbose -Verbose'
run: |-
Import-Module ./build.psm1
Write-LogGroupStart -Title 'Environment'
Get-ChildItem -Path env: | Out-String -width 9999 -Stream | write-Verbose -Verbose
Write-LogGroupEnd -Title 'Environment'
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
run: |-
Import-Module ./build.psm1
Write-LogGroupStart -Title 'Artifacts Directory'
Get-ChildItem "${{ github.workspace }}/build/*" -Recurse
Write-LogGroupEnd -Title 'Artifacts Directory'
shell: pwsh

- uses: actions/setup-dotnet@v4
with:
global-json-file: ./global.json

- name: Bootstrap
shell: pwsh
run: |-
Import-Module ./build.psm1
Write-LogGroupStart -Title 'Bootstrap'
Import-Module ./tools/ci.psm1
Invoke-CIInstall -SkipUser
Write-LogGroupEnd -Title 'Bootstrap'

- name: Extract Files
uses: actions/[email protected]
Expand Down Expand Up @@ -68,7 +81,11 @@ runs:

- name: Capture Extracted Build ZIP
continue-on-error: true
run: Get-ChildItem "${{ github.workspace }}/bins/*" -Recurse -ErrorAction SilentlyContinue
run: |-
Import-Module ./build.psm1
Write-LogGroupStart -Title 'Extracted Build ZIP'
Get-ChildItem "${{ github.workspace }}/bins/*" -Recurse -ErrorAction SilentlyContinue
Write-LogGroupEnd -Title 'Extracted Build ZIP'
shell: pwsh

- name: Test
Expand Down
64 changes: 30 additions & 34 deletions .github/actions/test/process-pester-results/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,47 +18,43 @@ inputs:
runs:
using: composite
steps:
- name: Convert JUnit to CTRF
run: |-
- name: Log Summary
run: |
if (-not $env:GITHUB_STEP_SUMMARY) {
Write-Error "GITHUB_STEP_SUMMARY is not set. Ensure this workflow is running in a GitHub Actions environment."
exit 1
}

$testCaseCount = 0
$testErrorCount = 0
$testFailureCount = 0
$testDisabledCount = 0
Get-ChildItem -Path "${{ inputs.testResultsFolder }}/*.xml" -Recurse | ForEach-Object {
npx --yes junit-to-ctrf $_.FullName --output ./${{ inputs.ctrfFolder }}/$($_.BaseName).json --tool Pester
$results = [xml] (get-content $_.FullName)
$testCaseCount += $results.testsuites.tests
$testErrorCount += $results.testsuites.errors
$testFailureCount += $results.testsuites.failures
$testDisabledCount += $results.testsuites.disabled
}
shell: pwsh

# 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()
@"

# Summary of ${{ inputs.name }}

- Total Tests: $testCaseCount
- Total Errors: $testErrorCount
- Total Failures: $testFailureCount
- Total Disabled: $testDisabledCount

"@ | Out-File -FilePath $ENV:GITHUB_STEP_SUMMARY -Append

Write-Host "Summary written to $ENV:GITHUB_STEP_SUMMARY"
Get-Content $ENV:GITHUB_STEP_SUMMARY
shell: pwsh

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

- name: Upload ctrf artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: ctrf-pester-${{ inputs.name }}
path: ${{ inputs.ctrfFolder }}
26 changes: 10 additions & 16 deletions .github/workflows/linux-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ on:
branches:
- master
- release/**
- github-mirror
paths:
- "**"
- "!.github/ISSUE_TEMPLATE/**"
Expand All @@ -19,6 +20,7 @@ on:
branches:
- master
- release/**
- github-mirror
# Path filters for PRs need to go into the changes job

concurrency:
Expand All @@ -43,30 +45,22 @@ jobs:
# Required permissions
permissions:
pull-requests: read
contents: read

# Set job outputs to values from filter step
outputs:
source: ${{ steps.filter.outputs.source }}
steps:
- name: checkout
uses: actions/[email protected]
uses: actions/checkout@v4
with:
persist-credentials: false

# For pull requests it's not necessary to checkout the code
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.2.0
- name: Change Detection
id: filter
uses: "./.github/actions/infrastructure/path-filters"
with:
list-files: json
filters: .github/action-filters.yml

- name: Capture outputs
run: |
"source: ${{ steps.filter.outputs.source }}"
"github: ${{ steps.filter.outputs.github }}"
"tools: ${{ steps.filter.outputs.tools }}"
"props: ${{ steps.filter.outputs.props }}"
"tests: ${{ steps.filter.outputs.tests }}"
"mainSource: ${{ steps.filter.outputs.mainSource }}"
"buildModule: ${{ steps.filter.outputs.buildModule }}"
shell: pwsh
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

ci_build:
name: Build PowerShell
Expand Down
23 changes: 8 additions & 15 deletions .github/workflows/macos-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ on:
branches:
- master
- release/**
- github-mirror
paths:
- "**"
- "!.github/ISSUE_TEMPLATE/**"
Expand All @@ -17,6 +18,7 @@ on:
branches:
- master
- release/**
- github-mirror
# Path filters for PRs need to go into the changes job

concurrency:
Expand All @@ -34,6 +36,7 @@ env:
__SuppressAnsiEscapeSequences: 1
nugetMultiFeedWarnLevel: none
system_debug: 'false'

jobs:
changes:
name: Change Detection
Expand All @@ -42,30 +45,20 @@ jobs:
# Required permissions
permissions:
pull-requests: read
contents: read

# Set job outputs to values from filter step
outputs:
source: ${{ steps.filter.outputs.source }}
steps:
- name: checkout
uses: actions/[email protected]

# For pull requests it's not necessary to checkout the code
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.2.0
- name: Change Detection
id: filter
uses: "./.github/actions/infrastructure/path-filters"
with:
list-files: json
filters: .github/action-filters.yml

- name: Capture outputs
run: |
"source: ${{ steps.filter.outputs.source }}"
"github: ${{ steps.filter.outputs.github }}"
"tools: ${{ steps.filter.outputs.tools }}"
"props: ${{ steps.filter.outputs.props }}"
"tests: ${{ steps.filter.outputs.tests }}"
"mainSource: ${{ steps.filter.outputs.mainSource }}"
"buildModule: ${{ steps.filter.outputs.buildModule }}"
shell: pwsh
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

ci_build:
name: Build PowerShell
Expand Down
23 changes: 8 additions & 15 deletions .github/workflows/windows-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
branches:
- master
- release/**
- github-mirror
paths:
- "**"
- "!.vsts-ci/misc-analysis.yml"
Expand All @@ -16,6 +17,8 @@ on:
branches:
- master
- release/**
- github-mirror

# Path filters for PRs need to go into the changes job

concurrency:
Expand Down Expand Up @@ -43,30 +46,20 @@ jobs:
# Required permissions
permissions:
pull-requests: read
contents: read

# Set job outputs to values from filter step
outputs:
source: ${{ steps.filter.outputs.source }}
steps:
- name: checkout
uses: actions/[email protected]

# For pull requests it's not necessary to checkout the code
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.2.0
- name: Change Detection
id: filter
uses: "./.github/actions/infrastructure/path-filters"
with:
list-files: json
filters: .github/action-filters.yml

- name: Capture outputs
run: |
"source: ${{ steps.filter.outputs.source }}"
"github: ${{ steps.filter.outputs.github }}"
"tools: ${{ steps.filter.outputs.tools }}"
"props: ${{ steps.filter.outputs.props }}"
"tests: ${{ steps.filter.outputs.tests }}"
"mainSource: ${{ steps.filter.outputs.mainSource }}"
"buildModule: ${{ steps.filter.outputs.buildModule }}"
shell: pwsh
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

ci_build:
name: Build PowerShell
Expand Down
Loading
Loading