Skip to content

release/1.3.0

release/1.3.0 #34

Workflow file for this run

name: CI - Build & Test
on:
pull_request:
branches: ["*"]
env:
SOLUTION: PushAndPull/PushAndPull.sln
DOTNET_VERSION: 9.0.x
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Restore dependencies
run: dotnet restore ${{ env.SOLUTION }}
- name: Build solution
run: dotnet build ${{ env.SOLUTION }} --no-restore --configuration Release
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-output
path: |
**/bin/Release/
**/obj/
test:
name: Test
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-output
- name: Run tests with coverage
run: |
dotnet test ${{ env.SOLUTION }} \
--no-build \
--configuration Release \
--collect:"XPlat Code Coverage" \
--results-directory ./TestResults \
--logger "trx;LogFileName=test_results.trx" \
--verbosity minimal
- name: Upload coverage
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: ./TestResults
- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results
path: ./TestResults
required:
name: CI Required
runs-on: ubuntu-latest
needs: [build, test]
if: always()
steps:
- name: Check all jobs passed
run: |
if [[ "${{ needs.build.result }}" != "success" || "${{ needs.test.result }}" != "success" ]]; then
echo "CI failed — build: ${{ needs.build.result }}, test: ${{ needs.test.result }}"
exit 1
fi
echo "All checks passed"