From 33aa82e8a4b33237fffa953e8cc9e99a618ee8cc Mon Sep 17 00:00:00 2001 From: TheMeinerLP Date: Mon, 3 Aug 2026 14:57:06 +0200 Subject: [PATCH] ci: let the build be started by hand, not only by a pull request Build PR ran on `pull_request` alone, and that turned out to be the only way to get a build at all. When feat/block-storage conflicted with main on 2026-08-02 at 21:07 UTC, GitHub stopped being able to form refs/pull/39/merge, and with no mergeable state no run was created -- not a failed one, not a skipped one, none. Both open PRs sat without CI for fifteen hours and nothing in the UI said why. The only workflow carrying workflow_dispatch was Benchmark, so there was no way to ask for a build and watch it fail. A manual trigger does not fix the conflict, but it makes the state visible instead of silent. force-build is tied to the event because the reusable workflow decides whether to build from a dorny/paths-filter comparison, and that comparison has no base outside a pull request. A run somebody started by hand is one they want regardless of what changed, so it skips the filter rather than depending on whatever the filter answers without a base. On a pull_request event the expression is false and the path filter keeps deciding exactly as before. Not verified yet, and it cannot be from a branch: GitHub reads workflow_dispatch only from the default branch, so the button does not appear for this workflow until this is merged. What to check afterwards is in the pull request. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01NGpJqdmh7ZNH487GLqPJmK --- .github/workflows/build-pr.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml index 6cb03d4..9889db3 100644 --- a/.github/workflows/build-pr.yml +++ b/.github/workflows/build-pr.yml @@ -1,6 +1,8 @@ name: Build PR -on: [pull_request] +on: + pull_request: + workflow_dispatch: permissions: contents: read @@ -10,9 +12,15 @@ permissions: jobs: build: # Reuse the OneLiteFeather org build workflow (Java 25, OS matrix, tests, coverage). + # + # force-build on a manual run: the reusable workflow decides whether to build from a + # dorny/paths-filter comparison, and that comparison has no base outside a pull request. A + # manual run is one somebody asked for regardless of what changed, so it skips the filter + # instead of depending on what the filter would answer without a base. uses: OneLiteFeatherNET/workflows/.github/workflows/gradle-build-pr.yml@v2.4.0 with: java-version: "25" java-distribution: "temurin" run-tests: true + force-build: ${{ github.event_name == 'workflow_dispatch' }} secrets: inherit