Skip to content
Merged
Changes from all commits
Commits
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
27 changes: 25 additions & 2 deletions .github/workflows/ci-on-push.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: NVRC CI
name: NVRC E2E
on:
pull_request_target:
branches:
Expand All @@ -22,8 +22,10 @@ concurrency:

jobs:
# Detect if only docs changed - skip CI if so
# Only run if ok-to-test label present (security gate for self-hosted runner)
changes:
name: Detect changes
if: ${{ contains(github.event.pull_request.labels.*.name, 'ok-to-test') }}
runs-on: ubuntu-latest
outputs:
code: ${{ steps.filter.outputs.code }}
Expand All @@ -48,7 +50,7 @@ jobs:
- 'Cargo.lock'
- '.cargo/**'

nvrc-ci-on-push:
ci:
needs: changes
# Only run on self-hosted runner if: 1) ok-to-test label present (security), 2) code changed (efficiency)
if: ${{ contains(github.event.pull_request.labels.*.name, 'ok-to-test') && needs.changes.outputs.code == 'true' }}
Expand All @@ -63,3 +65,24 @@ jobs:
pr-number: ${{ github.event.pull_request.number }}
tag: ${{ github.event.pull_request.number }}-${{ github.event.pull_request.head.sha }}
target-branch: ${{ github.event.pull_request.base.ref }}

# Gate job for branch protection - set "CI Complete" as required status check
# Passes when: CI succeeded OR no code changes (docs-only PR)
ci-complete:
name: CI Complete
needs: [changes, ci]
if: always() && contains(github.event.pull_request.labels.*.name, 'ok-to-test')
runs-on: ubuntu-latest
steps:
- name: Check CI result
run: |
if [[ "${{ needs.changes.outputs.code }}" != "true" ]]; then
echo "✓ No code changes - CI skipped"
exit 0
fi
if [[ "${{ needs.ci.result }}" == "success" ]]; then
echo "✓ CI passed"
exit 0
fi
echo "✗ CI failed: ${{ needs.ci.result }}"
exit 1
Loading