mirror of
https://github.com/Smaug123/dmarc-fsharp
synced 2025-10-05 15:38:42 +00:00
Abstract away the required-checks feature (#8)
This commit is contained in:
8
.github/workflows/dotnet.yaml
vendored
8
.github/workflows/dotnet.yaml
vendored
@@ -169,8 +169,6 @@ jobs:
|
|||||||
needs: [check-dotnet-format, check-nix-format, build, build-nix, linkcheck, flake-check, analyzers, nuget-pack, expected-pack]
|
needs: [check-dotnet-format, check-nix-format, build, build-nix, linkcheck, flake-check, analyzers, nuget-pack, expected-pack]
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: Smaug123/all-required-checks-complete-action@05b40a8c47ef0b175ea326e9abb09802cb67b44e
|
||||||
- name: Check job statuses
|
with:
|
||||||
env:
|
needs-context: ${{ toJSON(needs) }}
|
||||||
RESULTS: ${{ toJSON(needs) }}
|
|
||||||
run: python .github/workflows/required_checks.py
|
|
||||||
|
40
.github/workflows/required_checks.py
vendored
40
.github/workflows/required_checks.py
vendored
@@ -1,40 +0,0 @@
|
|||||||
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)
|
|
Reference in New Issue
Block a user