From 9eb8cac507d94cf50b0d2cefc7e8b95fd4a6646d Mon Sep 17 00:00:00 2001 From: Oliver Kieselbach Date: Fri, 4 Sep 2026 05:00:25 +0200 Subject: [PATCH] ci: skip CI and CodeQL on gitlink bumps and prose-only commits Every "chore: bump internal gitlink" commit ran the full CI matrix and both CodeQL analyses, because a gitlink bump reports the bare path 'internal' (no trailing slash) and the existing 'internal/**' filter does not match it. Both workflows now ignore the bare and nested forms of the three private submodule paths plus markdown, LICENSE and the .github metadata files. CodeQL's weekly unfiltered schedule remains the backstop. Co-Authored-By: Claude Fable 5.1 --- .github/workflows/ci.yml | 34 +++++++++++++++++++++++++++++++++- .github/workflows/codeql.yml | 29 +++++++++++++++++++++++++---- 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 29101e7d..9e9b7a29 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,12 +7,44 @@ name: CI # The deploy workflows build but never test, so this is the only place the suites # actually run. It does not gate anything — main is deliberately unprotected, so a # red run reports rather than blocks. Read the result and follow up. - +# +# Path filters: commits that only bump a private submodule gitlink (internal/, infra/, +# .claude/commands) or touch prose cannot change anything the suites cover, so they are +# skipped instead of burning ~15 runner-minutes each. A gitlink bump reports the bare +# path ('internal', no trailing slash), which 'internal/**' does NOT match — both forms +# are listed. GitHub skips only when EVERY changed path matches; a commit that touches +# docs AND code still runs. on: push: branches: [main] + paths-ignore: + - 'internal' + - 'internal/**' + - 'infra' + - 'infra/**' + - '.claude/**' + - '.gitmodules' + - '**/*.md' + - 'LICENSE' + - '.github/ISSUE_TEMPLATE/**' + - '.github/FUNDING.yml' + - '.github/dependabot.yml' + - '.github/assets/**' pull_request: branches: [main] + paths-ignore: + - 'internal' + - 'internal/**' + - 'infra' + - 'infra/**' + - '.claude/**' + - '.gitmodules' + - '**/*.md' + - 'LICENSE' + - '.github/ISSUE_TEMPLATE/**' + - '.github/FUNDING.yml' + - '.github/dependabot.yml' + - '.github/assets/**' workflow_dispatch: permissions: diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 7768bbf1..295a8d7a 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,22 +1,43 @@ name: CodeQL -# Documentation-only changes cannot affect what CodeQL analyzes (C# and -# TypeScript), so they are filtered out rather than spending ~10 minutes to -# re-report an unchanged result. A commit that touches docs AND code still runs: -# GitHub skips only when EVERY changed path matches the filter. +# Documentation-only changes and private-submodule gitlink bumps (internal/, infra/, +# .claude/commands) cannot affect what CodeQL analyzes (C# and TypeScript), so they +# are filtered out rather than spending ~10 minutes to re-report an unchanged result. +# A gitlink bump reports the bare path ('internal', no trailing slash), which +# 'internal/**' does NOT match — both forms are listed. A commit that touches docs +# AND code still runs: GitHub skips only when EVERY changed path matches the filter. +# Same list as ci.yml; keep them in step. on: push: branches: [main] paths-ignore: + - 'internal' - 'internal/**' + - 'infra' + - 'infra/**' + - '.claude/**' + - '.gitmodules' - '**/*.md' - 'LICENSE' + - '.github/ISSUE_TEMPLATE/**' + - '.github/FUNDING.yml' + - '.github/dependabot.yml' + - '.github/assets/**' pull_request: branches: [main] paths-ignore: + - 'internal' - 'internal/**' + - 'infra' + - 'infra/**' + - '.claude/**' + - '.gitmodules' - '**/*.md' - 'LICENSE' + - '.github/ISSUE_TEMPLATE/**' + - '.github/FUNDING.yml' + - '.github/dependabot.yml' + - '.github/assets/**' schedule: # Weekly, so advisories published after a merge still surface. Deliberately # unfiltered — it re-analyzes the whole tree regardless of what changed, which