Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
394c9a6
ci: run performance validation nightly and increase benchmark iterati…
rjmurillo Jul 19, 2025
2a59ceb
ci: run build, test, and performance validation on both windows-11-ar…
rjmurillo Jul 19, 2025
fdeee68
ci: deduplicate build and performance steps using composite action
rjmurillo Jul 19, 2025
1993586
ci: rename composite action to setup-restore-build for clarity
rjmurillo Jul 19, 2025
f718940
ci: fix artifact naming for performance job to prevent OS conflicts
rjmurillo Jul 19, 2025
a800e57
ci: run performance validation nightly and increase benchmark iterati…
rjmurillo Jul 19, 2025
42a53cb
ci: run build, test, and performance validation on both windows-11-ar…
rjmurillo Jul 19, 2025
d66ffe3
ci: deduplicate build and performance steps using composite action
rjmurillo Jul 19, 2025
752aee8
ci: rename composite action to setup-restore-build for clarity
rjmurillo Jul 19, 2025
60c827e
ci: fix artifact naming for performance job to prevent OS conflicts
rjmurillo Jul 19, 2025
c3576b7
Update main.yml reusable step syntax
rjmurillo Jul 19, 2025
822281c
Update main.yml step reuse syntax
rjmurillo Jul 19, 2025
7527716
ci: add semantic PR validation check (#555)
rjmurillo Jul 19, 2025
a871c51
Update main.yml reusable step syntax to avoid path problem
rjmurillo Jul 19, 2025
eac1439
Update main.yml
rjmurillo Jul 19, 2025
6253322
Add Dependency Review Action and improve Moq detection
rjmurillo Jul 19, 2025
3539ab4
Update workflows to include checkout and build steps
rjmurillo Jul 19, 2025
a3e37d6
fix: specify shell for NuGet restore and build steps in action.yml
rjmurillo Jul 19, 2025
fa85571
fix: expand OS matrix for perf jobs to include latest versions and macOS
rjmurillo Jul 19, 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
17 changes: 17 additions & 0 deletions .github/actions/setup-restore-build/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: 'Setup, Restore, and Build Solution'
description: 'Checks out code, sets up .NET, restores NuGet packages, and builds the solution for CI jobs.'
runs:
using: "composite"
steps:
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
global-json-file: ./global.json

- name: NuGet Restore
shell: pwsh
run: dotnet restore

- name: Build
shell: pwsh
run: dotnet build --no-restore --configuration Release /p:Deterministic=true /p:UseSharedCompilation=false /p:BuildInParallel=false /nodeReuse:false /bl:./artifacts/logs/release/build.release.binlog
44 changes: 27 additions & 17 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,9 @@ on:
merge_group:
branches:
- main

workflow_call: # Allow to be called from the release workflow
schedule:
- cron: '31 15 * * 0' # Run periodically to keep CodeQL database updated
- cron: '0 3 * * *' # Nightly run for performance validation
Comment thread
rjmurillo marked this conversation as resolved.
Comment thread
rjmurillo marked this conversation as resolved.
Comment thread
rjmurillo marked this conversation as resolved.

permissions:
security-events: write # required for CodeQL
Expand All @@ -25,7 +24,7 @@ permissions:
jobs:
build:
strategy:
fail-fast: false # Run all OSes, even if one fails, to help narrow down issues that only impact some platforms
fail-fast: false
matrix:
os: [windows-11-arm, ubuntu-24.04-arm]

Expand All @@ -38,18 +37,10 @@ jobs:
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # avoid shallow clone so nbgv can do its work
fetch-depth: 0

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

- name: NuGet Restore
run: dotnet restore

- name: Build
run: dotnet build --no-restore --configuration Release /p:Deterministic=true /p:UseSharedCompilation=false /p:BuildInParallel=false /nodeReuse:false /bl:./artifacts/logs/release/build.release.binlog
- name: Setup, Restore, and Build Solution
Comment thread
coderabbitai[bot] marked this conversation as resolved.
uses: ./.github/actions/setup-restore-build
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Comment thread
coderabbitai[bot] marked this conversation as resolved.

- name: Test
run: dotnet test --no-build --configuration Release --settings ./build/targets/tests/test.runsettings
Expand Down Expand Up @@ -96,7 +87,7 @@ jobs:
run: cat artifacts/TestResults/coverage/SummaryGithub.md >> $GITHUB_STEP_SUMMARY
shell: bash

- name: Upload coverage data to Codacy
- name: Upload coverage data to Codacy
if: ${{ runner.os == 'Linux' && env.IS_CODACY_COVERAGE_ALLOWED == 'true' }}
uses: codacy/codacy-coverage-reporter-action@v1.3.0
with:
Expand All @@ -118,10 +109,29 @@ jobs:
./artifacts/package
if-no-files-found: error

performance:
if: github.event_name == 'schedule' && github.ref == 'refs/heads/main'
strategy:
fail-fast: false
matrix:
os: [windows-11-arm, ubuntu-24.04-arm, ubuntu-latest, windows-latest, macos-latest]

runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup, Restore, and Build Solution
uses: ./.github/actions/setup-restore-build

- name: Validate performance
shell: pwsh
# Runs on both Linux and Windows, with ETL disabled on non-Windows
if: ${{ runner.os == 'Linux' || runner.os == 'Windows' }}
# BenchmarkDotNet settings:
# --warmupCount 2: Two warmup iterations to allow JIT and runtime optimizations to stabilize before measurement.
# --invocationCount 15: Fifteen measured iterations for statistically meaningful results and to reduce noise.
# These values balance CI cost and reliability, as recommended in issue #553.
run: ${{ github.workspace }}/build/scripts/perf/PerfCore.ps1 -v diag -diff -ci

- name: Upload performance files
Expand Down
17 changes: 17 additions & 0 deletions .github/workflows/semantic-pr-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: "Semantic PR Check"

on:
pull_request:
types:
- opened
- edited
- synchronize

jobs:
main:
name: Validate PR title
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2 changes: 1 addition & 1 deletion build/scripts/perf/RunPerfTests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ try {
$projectFullPath = Join-Path $perftestRootFolder $project
& dotnet restore $projectFullPath -verbosity detailed
& dotnet build -c Release --no-incremental $projectFullPath
$comandArguments = "run -c Release --no-build --project $projectFullPath -- --warmupCount 2 --invocationCount 1 --runOncePerIteration --memory --exporters JSON --artifacts $output"
$comandArguments = "run -c Release --no-build --project $projectFullPath -- --warmupCount 2 --invocationCount 15 --runOncePerIteration --memory --exporters JSON --artifacts $output"
if ($ci) {
$comandArguments = "$comandArguments --stopOnFirstError --keepFiles"
}
Expand Down
Loading