Skip to content

Commit 502c9d2

Browse files
Remove redundant job status checks and streamline output handling in Get-AggregatedStatus.ps1
1 parent c07c4c3 commit 502c9d2

File tree

2 files changed

+175
-113
lines changed

2 files changed

+175
-113
lines changed

.github/workflows/Action-Test.yml

Lines changed: 174 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,37 +19,97 @@ permissions:
1919
jobs:
2020
ActionTestSrcSourceCode:
2121
name: Action-Test - [Src-SourceCode]
22-
uses: ./.github/workflows/ActionTestWorkflow.yml
23-
with:
24-
TestType: Src-SourceCode
25-
Path: tests/srcTestRepo/src
26-
Settings: SourceCode
22+
runs-on: ubuntu-latest
23+
outputs:
24+
Outcome: ${{ steps.action-test.outcome }}
25+
Conclusion: ${{ steps.action-test.conclusion }}
26+
steps:
27+
- name: Checkout repo
28+
uses: actions/checkout@v4
29+
30+
- name: Action-Test
31+
uses: ./
32+
id: action-test
33+
with:
34+
Path: tests/srcTestRepo/src
35+
Settings: SourceCode
36+
37+
- name: Status
38+
shell: pwsh
39+
run: |
40+
Write-Host "Outcome: ${{ steps.action-test.outcome }}"
41+
Write-Host "Conclusion: ${{ steps.action-test.conclusion }}"
2742
2843
ActionTestSrcCustom:
2944
name: Action-Test - [Src-Custom]
30-
uses: ./.github/workflows/ActionTestWorkflow.yml
31-
with:
32-
TestType: Src-Custom
33-
Path: tests/srcTestRepo/src
34-
Settings: Custom
35-
SettingsFilePath: tests/srcTestRepo/tests/Custom.Settings.psd1
45+
runs-on: ubuntu-latest
46+
outputs:
47+
Outcome: ${{ steps.action-test.outcome }}
48+
Conclusion: ${{ steps.action-test.conclusion }}
49+
steps:
50+
- name: Checkout repo
51+
uses: actions/checkout@v4
52+
53+
- name: Action-Test
54+
uses: ./
55+
id: action-test
56+
with:
57+
Path: tests/srcTestRepo/src
58+
Settings: Custom
59+
SettingsFilePath: tests/srcTestRepo/tests/Custom.Settings.psd1
60+
61+
- name: Status
62+
shell: pwsh
63+
run: |
64+
Write-Host "Outcome: ${{ steps.action-test.outcome }}"
65+
Write-Host "Conclusion: ${{ steps.action-test.conclusion }}"
3666
3767
ActionTestSrcWithManifest:
3868
name: Action-Test - [Src-WithManifest]
39-
uses: ./.github/workflows/ActionTestWorkflow.yml
40-
with:
41-
TestType: Src-WithManifest
42-
Path: tests/srcWithManifestTestRepo/src
43-
Settings: SourceCode
69+
runs-on: ubuntu-latest
70+
outputs:
71+
Outcome: ${{ steps.action-test.outcome }}
72+
Conclusion: ${{ steps.action-test.conclusion }}
73+
steps:
74+
- name: Checkout repo
75+
uses: actions/checkout@v4
76+
77+
- name: Action-Test
78+
uses: ./
79+
continue-on-error: true
80+
id: action-test
81+
with:
82+
Path: tests/srcWithManifestTestRepo/src
83+
Settings: SourceCode
84+
85+
- name: Status
86+
shell: pwsh
87+
run: |
88+
Write-Host "Outcome: ${{ steps.action-test.outcome }}"
89+
Write-Host "Conclusion: ${{ steps.action-test.conclusion }}"
4490
4591
ActionTestOutputs:
4692
name: Action-Test - [outputs]
47-
uses: ./.github/workflows/ActionTestWorkflow.yml
48-
with:
49-
TestType: outputs
50-
Path: tests/outputTestRepo/outputs/modules/PSModuleTest
51-
Settings: Module
93+
runs-on: ubuntu-latest
94+
outputs:
95+
Outcome: ${{ steps.action-test.outcome }}
96+
Conclusion: ${{ steps.action-test.conclusion }}
97+
steps:
98+
- name: Checkout repo
99+
uses: actions/checkout@v4
100+
101+
- name: Action-Test
102+
uses: ./
103+
id: action-test
104+
with:
105+
Path: tests/outputTestRepo/outputs/modules/PSModuleTest
106+
Settings: Module
52107

108+
- name: Status
109+
shell: pwsh
110+
run: |
111+
Write-Host "Outcome: ${{ steps.action-test.outcome }}"
112+
Write-Host "Conclusion: ${{ steps.action-test.conclusion }}"
53113
54114
CatchJob:
55115
name: Aggregate Status
@@ -73,4 +133,96 @@ jobs:
73133
- name: Aggregated Status
74134
uses: PSModule/Github-Script@v1
75135
with:
76-
Script: ./tests/Get-AggregatedStatus.ps1
136+
Script: |
137+
Install-PSResource -Name Markdown -Repository PSGallery -TrustRepository
138+
139+
# Build an array of objects for each job
140+
$ActionTestSrcSourceCodeExpectedOutcome = 'success'
141+
$ActionTestSrcSourceCodeOutcomeResult = $env:ActionTestSrcSourceCodeOutcome -eq $ActionTestSrcSourceCodeExpectedOutcome
142+
$ActionTestSrcSourceCodeExpectedConclusion = 'success'
143+
$ActionTestSrcSourceCodeConclusionResult = $env:ActionTestSrcSourceCodeConclusion -eq $ActionTestSrcSourceCodeExpectedConclusion
144+
145+
$ActionTestSrcCustomExpectedOutcome = 'success'
146+
$ActionTestSrcCustomOutcomeResult = $env:ActionTestSrcCustomOutcome -eq $ActionTestSrcCustomExpectedOutcome
147+
$ActionTestSrcCustomExpectedConclusion = 'success'
148+
$ActionTestSrcCustomConclusionResult = $env:ActionTestSrcCustomConclusion -eq $ActionTestSrcCustomExpectedConclusion
149+
150+
$ActionTestSrcWithManifestExpectedOutcome = 'failure'
151+
$ActionTestSrcWithManifestOutcomeResult = $env:ActionTestSrcWithManifestOutcome -eq $ActionTestSrcWithManifestExpectedOutcome
152+
$ActionTestSrcWithManifestExpectedConclusion = 'success'
153+
$ActionTestSrcWithManifestConclusionResult = $env:ActionTestSrcWithManifestConclusion -eq $ActionTestSrcWithManifestExpectedConclusion
154+
155+
$ActionTestOutputsExpectedOutcome = 'success'
156+
$ActionTestOutputsOutcomeResult = $env:ActionTestOutputsOutcome -eq $ActionTestOutputsExpectedOutcome
157+
$ActionTestOutputsExpectedConclusion = 'success'
158+
$ActionTestOutputsConclusionResult = $env:ActionTestOutputsConclusion -eq $ActionTestOutputsExpectedConclusion
159+
160+
$jobs = @(
161+
[PSCustomObject]@{
162+
Name = 'Action-Test - [Src-SourceCode]'
163+
Outcome = $env:ActionTestSrcSourceCodeOutcome
164+
ExpectedOutcome = $ActionTestSrcSourceCodeExpectedOutcome
165+
PassedOutcome = $ActionTestSrcSourceCodeOutcomeResult
166+
Conclusion = $env:ActionTestSrcSourceCodeConclusion
167+
ExpectedConclusion = $ActionTestSrcSourceCodeExpectedConclusion
168+
PassedConclusion = $ActionTestSrcSourceCodeConclusionResult
169+
},
170+
[PSCustomObject]@{
171+
Name = 'Action-Test - [Src-Custom]'
172+
Outcome = $env:ActionTestSrcCustomOutcome
173+
ExpectedOutcome = $ActionTestSrcCustomExpectedOutcome
174+
PassedOutcome = $ActionTestSrcCustomOutcomeResult
175+
Conclusion = $env:ActionTestSrcCustomConclusion
176+
ExpectedConclusion = $ActionTestSrcCustomExpectedConclusion
177+
PassedConclusion = $ActionTestSrcCustomConclusionResult
178+
},
179+
[PSCustomObject]@{
180+
Name = 'Action-Test - [Src-WithManifest]'
181+
Outcome = $env:ActionTestSrcWithManifestOutcome
182+
ExpectedOutcome = $ActionTestSrcWithManifestExpectedOutcome
183+
PassedOutcome = $ActionTestSrcWithManifestOutcomeResult
184+
Conclusion = $env:ActionTestSrcWithManifestConclusion
185+
ExpectedConclusion = $ActionTestSrcWithManifestExpectedConclusion
186+
PassedConclusion = $ActionTestSrcWithManifestConclusionResult
187+
},
188+
[PSCustomObject]@{
189+
Name = 'Action-Test - [outputs]'
190+
Outcome = $env:ActionTestOutputsOutcome
191+
ExpectedOutcome = $ActionTestOutputsExpectedOutcome
192+
PassedOutcome = $ActionTestOutputsOutcomeResult
193+
Conclusion = $env:ActionTestOutputsConclusion
194+
ExpectedConclusion = $ActionTestOutputsExpectedConclusion
195+
PassedConclusion = $ActionTestOutputsConclusionResult
196+
}
197+
)
198+
199+
# Display the table in the workflow logs
200+
$jobs | Format-List
201+
202+
$passed = $true
203+
$jobs | ForEach-Object {
204+
if (-not $_.PassedOutcome) {
205+
Write-Error "Job $($_.Name) failed with Outcome $($_.Outcome) and Expected Outcome $($_.ExpectedOutcome)"
206+
$passed = $false
207+
}
208+
209+
if (-not $_.PassedConclusion) {
210+
Write-Error "Job $($_.Name) failed with Conclusion $($_.Conclusion) and Expected Conclusion $($_.ExpectedConclusion)"
211+
$passed = $false
212+
}
213+
}
214+
215+
$icon = if ($passed) { '✅' } else { '❌' }
216+
$status = Heading 1 "$icon - GitHub Actions Status" {
217+
Table {
218+
$jobs
219+
}
220+
}
221+
222+
Set-GitHubStepSummary -Summary $status
223+
224+
if (-not $passed) {
225+
Write-GitHubError 'One or more jobs failed'
226+
exit 1
227+
}
228+

tests/Get-AggregatedStatus.ps1

Lines changed: 1 addition & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,91 +1 @@
1-
Install-PSResource -Name Markdown -Repository PSGallery -TrustRepository
2-
3-
# Build an array of objects for each job
4-
$ActionTestSrcSourceCodeExpectedOutcome = 'success'
5-
$ActionTestSrcSourceCodeOutcomeResult = $env:ActionTestSrcSourceCodeOutcome -eq $ActionTestSrcSourceCodeExpectedOutcome
6-
$ActionTestSrcSourceCodeExpectedConclusion = 'success'
7-
$ActionTestSrcSourceCodeConclusionResult = $env:ActionTestSrcSourceCodeConclusion -eq $ActionTestSrcSourceCodeExpectedConclusion
8-
9-
$ActionTestSrcCustomExpectedOutcome = 'success'
10-
$ActionTestSrcCustomOutcomeResult = $env:ActionTestSrcCustomOutcome -eq $ActionTestSrcCustomExpectedOutcome
11-
$ActionTestSrcCustomExpectedConclusion = 'success'
12-
$ActionTestSrcCustomConclusionResult = $env:ActionTestSrcCustomConclusion -eq $ActionTestSrcCustomExpectedConclusion
13-
14-
$ActionTestSrcWithManifestExpectedOutcome = 'failure'
15-
$ActionTestSrcWithManifestOutcomeResult = $env:ActionTestSrcWithManifestOutcome -eq $ActionTestSrcWithManifestExpectedOutcome
16-
$ActionTestSrcWithManifestExpectedConclusion = 'success'
17-
$ActionTestSrcWithManifestConclusionResult = $env:ActionTestSrcWithManifestConclusion -eq $ActionTestSrcWithManifestExpectedConclusion
18-
19-
$ActionTestOutputsExpectedOutcome = 'success'
20-
$ActionTestOutputsOutcomeResult = $env:ActionTestOutputsOutcome -eq $ActionTestOutputsExpectedOutcome
21-
$ActionTestOutputsExpectedConclusion = 'success'
22-
$ActionTestOutputsConclusionResult = $env:ActionTestOutputsConclusion -eq $ActionTestOutputsExpectedConclusion
23-
24-
$jobs = @(
25-
[PSCustomObject]@{
26-
Name = 'Action-Test - [Src-SourceCode]'
27-
Outcome = $env:ActionTestSrcSourceCodeOutcome
28-
ExpectedOutcome = $ActionTestSrcSourceCodeExpectedOutcome
29-
PassedOutcome = $ActionTestSrcSourceCodeOutcomeResult
30-
Conclusion = $env:ActionTestSrcSourceCodeConclusion
31-
ExpectedConclusion = $ActionTestSrcSourceCodeExpectedConclusion
32-
PassedConclusion = $ActionTestSrcSourceCodeConclusionResult
33-
},
34-
[PSCustomObject]@{
35-
Name = 'Action-Test - [Src-Custom]'
36-
Outcome = $env:ActionTestSrcCustomOutcome
37-
ExpectedOutcome = $ActionTestSrcCustomExpectedOutcome
38-
PassedOutcome = $ActionTestSrcCustomOutcomeResult
39-
Conclusion = $env:ActionTestSrcCustomConclusion
40-
ExpectedConclusion = $ActionTestSrcCustomExpectedConclusion
41-
PassedConclusion = $ActionTestSrcCustomConclusionResult
42-
},
43-
[PSCustomObject]@{
44-
Name = 'Action-Test - [Src-WithManifest]'
45-
Outcome = $env:ActionTestSrcWithManifestOutcome
46-
ExpectedOutcome = $ActionTestSrcWithManifestExpectedOutcome
47-
PassedOutcome = $ActionTestSrcWithManifestOutcomeResult
48-
Conclusion = $env:ActionTestSrcWithManifestConclusion
49-
ExpectedConclusion = $ActionTestSrcWithManifestExpectedConclusion
50-
PassedConclusion = $ActionTestSrcWithManifestConclusionResult
51-
},
52-
[PSCustomObject]@{
53-
Name = 'Action-Test - [outputs]'
54-
Outcome = $env:ActionTestOutputsOutcome
55-
ExpectedOutcome = $ActionTestOutputsExpectedOutcome
56-
PassedOutcome = $ActionTestOutputsOutcomeResult
57-
Conclusion = $env:ActionTestOutputsConclusion
58-
ExpectedConclusion = $ActionTestOutputsExpectedConclusion
59-
PassedConclusion = $ActionTestOutputsConclusionResult
60-
}
61-
)
62-
63-
# Display the table in the workflow logs
64-
$jobs | Format-List
65-
66-
$passed = $true
67-
$jobs | ForEach-Object {
68-
if (-not $_.PassedOutcome) {
69-
Write-Error "Job $($_.Name) failed with Outcome $($_.Outcome) and Expected Outcome $($_.ExpectedOutcome)"
70-
$passed = $false
71-
}
72-
73-
if (-not $_.PassedConclusion) {
74-
Write-Error "Job $($_.Name) failed with Conclusion $($_.Conclusion) and Expected Conclusion $($_.ExpectedConclusion)"
75-
$passed = $false
76-
}
77-
}
78-
79-
$icon = if ($passed) { '' } else { '' }
80-
$status = Heading 1 "$icon - GitHub Actions Status" {
81-
Table {
82-
$jobs
83-
}
84-
}
85-
86-
Set-GitHubStepSummary -Summary $status
87-
88-
if (-not $passed) {
89-
Write-GitHubError 'One or more jobs failed'
90-
exit 1
91-
}
1+


0 commit comments

Comments
 (0)