From 6da5d64509522e4c9ca340109362f65d5f51bd23 Mon Sep 17 00:00:00 2001 From: Mike Odnis Date: Fri, 17 Apr 2026 01:10:45 -0400 Subject: [PATCH 1/3] ci: add placeholder `required` status gate for org ruleset Satisfies the `required` status-check context in org ruleset `default-branch-baseline` (id 15191038, currently evaluate mode). Placeholder: this job always passes. Before the ruleset flips to active, harden it with `needs:` on real language-CI jobs or replace with a call to a reusable workflow from resq-software/.github once the matching lang-ci.yml exists. --- .github/workflows/required.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/required.yml diff --git a/.github/workflows/required.yml b/.github/workflows/required.yml new file mode 100644 index 0000000..7c3d2ec --- /dev/null +++ b/.github/workflows/required.yml @@ -0,0 +1,29 @@ +# Copyright 2026 ResQ Software +# SPDX-License-Identifier: Apache-2.0 +# +# Minimal `required` status-check emitter — placeholder to satisfy the +# org ruleset `default-branch-baseline` (id 15191038) while +# language-specific reusable CI for this repo is still pending. Harden +# this job (add `needs:` on real CI jobs) before the ruleset flips from +# evaluate to active. + +name: required + +on: + push: + branches: [main, master] + pull_request: + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + required: + name: required + runs-on: ubuntu-latest + steps: + - run: echo "ok — placeholder until language CI lands" From 043a9ef8e7643f2da0124fd78dfeae94cd2d4805 Mon Sep 17 00:00:00 2001 From: Mike Odnis Date: Fri, 17 Apr 2026 01:23:28 -0400 Subject: [PATCH 2/3] =?UTF-8?q?ci:=20harden=20`required`=20gate=20?= =?UTF-8?q?=E2=80=94=20call=20real=20dotnet-ci=20reusable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces the always-pass placeholder with a ci.yml that calls the org-wide `required` aggregator with `lang: dotnet` and the correct solution path. Pinned to resq-software/.github@6410acba18c9fc79949643abd48f0a2d43994c62 (the commit introducing dotnet-ci.yml). After PR#12 on resq-software/.github merges, re-pin to the merge commit SHA or a semver tag. The top-level `required` job emits the status-check context consumed by org ruleset `default-branch-baseline`. --- .github/workflows/ci.yml | 47 ++++++++++++++++++++++++++++++++++ .github/workflows/required.yml | 29 --------------------- 2 files changed, 47 insertions(+), 29 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/required.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..72887d2 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,47 @@ +# Copyright 2026 ResQ Software +# SPDX-License-Identifier: Apache-2.0 +# +# Thin CI wrapper. Dispatches to the org-wide reusable `required` +# aggregator in resq-software/.github (which calls dotnet-ci + +# security-scan). The top-level `required` job emits the status- +# check context consumed by the org ruleset `default-branch-baseline`. + +name: CI + +on: + push: + branches: [main] + pull_request: + +permissions: + contents: read + security-events: write + pull-requests: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + gates: + uses: resq-software/.github/.github/workflows/required.yml@6410acba18c9fc79949643abd48f0a2d43994c62 + with: + lang: dotnet + dotnet-solution: ResQ.Viz.sln + codeql-languages: '["csharp"]' + secrets: inherit + + required: + name: required + runs-on: ubuntu-latest + needs: [gates] + if: always() + steps: + - env: + R: ${{ needs.gates.result }} + run: | + set -eu + case "$R" in + success|skipped|"") echo "ok: gates=$R" ;; + *) echo "::error::gates reusable returned: $R"; exit 1 ;; + esac diff --git a/.github/workflows/required.yml b/.github/workflows/required.yml deleted file mode 100644 index 7c3d2ec..0000000 --- a/.github/workflows/required.yml +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright 2026 ResQ Software -# SPDX-License-Identifier: Apache-2.0 -# -# Minimal `required` status-check emitter — placeholder to satisfy the -# org ruleset `default-branch-baseline` (id 15191038) while -# language-specific reusable CI for this repo is still pending. Harden -# this job (add `needs:` on real CI jobs) before the ruleset flips from -# evaluate to active. - -name: required - -on: - push: - branches: [main, master] - pull_request: - -permissions: - contents: read - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - required: - name: required - runs-on: ubuntu-latest - steps: - - run: echo "ok — placeholder until language CI lands" From d879c496611b5c2de3247439719d292e30bcae5c Mon Sep 17 00:00:00 2001 From: Mike Odnis Date: Fri, 17 Apr 2026 06:12:00 -0400 Subject: [PATCH 3/3] ci: re-pin reusable workflow ref to resq-software/.github main MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updates @SHA from the feat-branch tip to the merge commit of resq-software/.github#12 (f4b51a620aa1bf89c0bce4f434b36f92ff7d517d). Functionally equivalent — same content — but pins to a ref that now exists on main rather than a closed PR branch. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 72887d2..58c6be6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,7 +24,7 @@ concurrency: jobs: gates: - uses: resq-software/.github/.github/workflows/required.yml@6410acba18c9fc79949643abd48f0a2d43994c62 + uses: resq-software/.github/.github/workflows/required.yml@f4b51a620aa1bf89c0bce4f434b36f92ff7d517d with: lang: dotnet dotnet-solution: ResQ.Viz.sln