dotnet_provisioner_unit_tests workflow will use newer actions (#840) #550
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: Dotnet Provisioner Unit Tests | |
on: push | |
env: | |
DOTNET_VERSION: '6.0' | |
jobs: | |
dotnet_provisioner_unit_tests: | |
name: Restore and Run Unit Tests | |
continue-on-error: true | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- os: windows-2022 | |
- os: ubuntu-20.04 | |
# - os: windows-2019 Cannot Target windows-2019 because the .NET 6 SDK won't receive security patches for this image | |
steps: | |
- name: Set git to use LF | |
run: | | |
git config --global core.autocrlf false | |
git config --global core.eol lf | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Restore Project | |
working-directory: HIRS_Provisioner.NET | |
run: | | |
dotnet restore | |
- name: Build on Windows | |
working-directory: HIRS_Provisioner.NET | |
if: contains(matrix.os, 'windows') | |
run: | | |
cd hirs | |
dotnet build -r win-x64 --configuration Release --no-restore | |
cd .. | |
- name: Build on Ubuntu | |
working-directory: HIRS_Provisioner.NET | |
if: contains(matrix.os, 'ubuntu') | |
run: | | |
dotnet build --configuration Release --no-restore | |
- name: Run Unit Tests and Save Logs - Windows | |
id: window_result | |
if: contains(matrix.os, 'windows') && always() | |
working-directory: HIRS_Provisioner.NET | |
run: | | |
$logs = dotnet test /p:PublishSingleFile=false --no-restore -v m | |
$results = [string]$logs | |
$results = $results.Contains("Passed!") | |
if($results) { $results = "Pass" } else { $results = "Fail"} | |
echo "::set-output name=result::$results" | |
$logName = "${{matrix.os}}-unit-tests-" + $results + ".log" | |
New-Item $logName | |
Set-Content $logName $logs | |
Get-Content $logName | |
- name: Run Unit Tests Ubuntu | |
if: contains(matrix.os, 'ubuntu') | |
working-directory: HIRS_Provisioner.NET | |
run: | | |
logName="${{matrix.os}}-unit-tests.log" | |
dotnet test --no-restore -v m > $logName | |
- name: Extract Ubuntu Unit Test Results | |
id: ubuntu_result | |
if: contains(matrix.os, 'ubuntu') && always() | |
working-directory: HIRS_Provisioner.NET | |
run: | | |
logName="${{matrix.os}}-unit-tests.log" | |
if grep -rnw $logName -e "Passed\!" ; | |
then | |
result="Pass" | |
else | |
result="Fail" | |
fi | |
echo "::set-output name=result::$result" | |
more $logName | |
- name: Upload Logs Ubuntu | |
uses: actions/upload-artifact@v4 | |
if: contains(matrix.os, 'ubuntu') && always() | |
with: | |
name: "${{matrix.os}}-unit-tests-${{steps.ubuntu_result.outputs.result}}.log" | |
path: HIRS_Provisioner.NET/*.log | |
- name: Upload Logs Windows | |
uses: actions/upload-artifact@v4 | |
if: contains(matrix.os, 'windows') && always() | |
with: | |
name: "${{matrix.os}}-unit-tests-${{steps.window_result.outputs.result}}.log" | |
path: HIRS_Provisioner.NET/*.log | |
Evaluator: | |
name: Evaluate Tests | |
needs: [dotnet_provisioner_unit_tests] | |
runs-on: ubuntu-latest | |
continue-on-error: false | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Make artifact directory | |
run: | | |
mkdir artifacts | |
- uses: actions/download-artifact@v3 | |
with: | |
path: artifacts | |
- name: Determine if a test failed | |
working-directory: artifacts | |
run: | | |
result="" | |
suffix="-unit-tests-Fail.log" | |
msg=" OS did not pass all the unit tests." | |
# Generate Annotations and Console Output | |
for file in *.log; do | |
if [[ "$file" == *"Fail"* ]]; then | |
title=${file%"$suffix"} | |
echo "::error title=$title Unit Tests Failed::The $title $msg" | |
result="Failed" | |
fi | |
done | |
if [ -n "$result" ] | |
then | |
exit 1 | |
fi |