-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
156 additions
and
111 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,111 +1,116 @@ | ||
name: .NET | ||
|
||
on: | ||
push: | ||
branches: [ main ] | ||
pull_request: | ||
branches: [ main ] | ||
|
||
env: | ||
DOTNET_NOLOGO: true | ||
DOTNET_CLI_TELEMETRY_OPTOUT: true | ||
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true | ||
NUGET_XMLDOC_MODE: '' | ||
DOTNET_MULTILEVEL_LOOKUP: 0 | ||
|
||
jobs: | ||
build: | ||
strategy: | ||
matrix: | ||
config: | ||
- Release | ||
- Debug | ||
|
||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 # so that NerdBank.GitVersioning has access to history | ||
- name: Setup .NET | ||
uses: actions/setup-dotnet@v4 | ||
with: | ||
dotnet-version: 7.0.x | ||
- name: Restore dependencies | ||
run: dotnet restore | ||
- name: Build | ||
run: dotnet build --no-restore --configuration ${{matrix.config}} | ||
- name: Test | ||
run: dotnet test --no-build --verbosity normal --configuration ${{matrix.config}} | ||
|
||
build-nix: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Install Nix | ||
uses: cachix/install-nix-action@V27 | ||
with: | ||
extra_nix_config: | | ||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||
- name: Build | ||
run: nix build | ||
|
||
check-dotnet-format: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Install Nix | ||
uses: cachix/install-nix-action@V27 | ||
with: | ||
extra_nix_config: | | ||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||
- name: Run Fantomas | ||
run: nix run .#fantomas -- --check . | ||
|
||
check-nix-format: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Install Nix | ||
uses: cachix/install-nix-action@V27 | ||
with: | ||
extra_nix_config: | | ||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||
- name: Run Alejandra | ||
run: nix develop --command alejandra --check . | ||
|
||
check-flake: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Install Nix | ||
uses: cachix/install-nix-action@V27 | ||
with: | ||
extra_nix_config: | | ||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||
- name: Check flake | ||
run: nix flake check | ||
|
||
linkcheck: | ||
name: Check links | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@master | ||
- name: Install Nix | ||
uses: cachix/install-nix-action@V27 | ||
with: | ||
extra_nix_config: | | ||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||
- name: Run link checker | ||
# Sadly we're in Bash | ||
run: 'nix develop --command markdown-link-check {,**/}*.md' | ||
|
||
all-required-checks-complete: | ||
needs: [check-dotnet-format, check-nix-format, build, build-nix, linkcheck, check-flake] | ||
runs-on: ubuntu-latest | ||
steps: | ||
- run: echo "All required checks complete." | ||
name: .NET | ||
|
||
on: | ||
push: | ||
branches: [ main ] | ||
pull_request: | ||
branches: [ main ] | ||
|
||
env: | ||
DOTNET_NOLOGO: true | ||
DOTNET_CLI_TELEMETRY_OPTOUT: true | ||
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true | ||
NUGET_XMLDOC_MODE: '' | ||
DOTNET_MULTILEVEL_LOOKUP: 0 | ||
|
||
jobs: | ||
build: | ||
strategy: | ||
matrix: | ||
config: | ||
- Release | ||
- Debug | ||
|
||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 # so that NerdBank.GitVersioning has access to history | ||
- name: Setup .NET | ||
uses: actions/setup-dotnet@v4 | ||
with: | ||
dotnet-version: 7.0.x | ||
- name: Restore dependencies | ||
run: dotnet restore | ||
- name: Build | ||
run: dotnet build --no-restore --configuration ${{matrix.config}} | ||
- name: Test | ||
run: dotnet test --no-build --verbosity normal --configuration ${{matrix.config}} | ||
|
||
build-nix: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Install Nix | ||
uses: cachix/install-nix-action@V27 | ||
with: | ||
extra_nix_config: | | ||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||
- name: Build | ||
run: nix build | ||
|
||
check-dotnet-format: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Install Nix | ||
uses: cachix/install-nix-action@V27 | ||
with: | ||
extra_nix_config: | | ||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||
- name: Run Fantomas | ||
run: nix run .#fantomas -- --check . | ||
|
||
check-nix-format: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Install Nix | ||
uses: cachix/install-nix-action@V27 | ||
with: | ||
extra_nix_config: | | ||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||
- name: Run Alejandra | ||
run: nix develop --command alejandra --check . | ||
|
||
check-flake: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Install Nix | ||
uses: cachix/install-nix-action@V27 | ||
with: | ||
extra_nix_config: | | ||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||
- name: Check flake | ||
run: nix flake check | ||
|
||
linkcheck: | ||
name: Check links | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@master | ||
- name: Install Nix | ||
uses: cachix/install-nix-action@V27 | ||
with: | ||
extra_nix_config: | | ||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | ||
- name: Run link checker | ||
# Sadly we're in Bash | ||
run: 'nix develop --command markdown-link-check {,**/}*.md' | ||
|
||
all-required-checks-complete: | ||
if: ${{ always() }} | ||
needs: [check-dotnet-format, check-nix-format, build, build-nix, linkcheck, check-flake] | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Check job statuses | ||
env: | ||
RESULTS: ${{ toJSON(needs) }} | ||
run: python .github/workflows/required_checks.py |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
import os | ||
import json | ||
import sys | ||
from typing import Any | ||
|
||
results_json = os.environ.get('RESULTS', '{}') or sys.exit(1) | ||
|
||
try: | ||
results = json.loads(results_json) | ||
except json.JSONDecodeError: | ||
print("Error: Unable to parse RESULTS as JSON") | ||
exit(1) | ||
|
||
def process_job(job_name: str, job_data: dict[str, Any]) -> int: | ||
""" | ||
Returns 0 on success and 1 on error. | ||
""" | ||
status = job_data['result'] | ||
print(f"Processing job: {job_name} with status: {status}") | ||
|
||
if status == "success": | ||
print(f"Job {job_name} succeeded.") | ||
return 0 | ||
elif status in {"failure", "cancelled"}: | ||
print(f"Job {job_name} failed: status {status}!") | ||
return 1 | ||
else: | ||
print(f"Job {job_name} has unknown status: {status}!") | ||
return 1 | ||
|
||
# Iterate over each job | ||
exit_status = 0 | ||
for job_name, job_data in results.items(): | ||
if not isinstance(job_data, dict): | ||
print(f"Unexpected shape at key {job_name}: {job_data}") | ||
sys.exit(2) | ||
exit_status += process_job(job_name, job_data) | ||
|
||
if exit_status > 0: | ||
sys.exit(3) |