From 185e96c2000e34aaab0854e3a2556bf8f95beffb Mon Sep 17 00:00:00 2001 From: Vitalii Mikhailov <5411011+Aragas@users.noreply.github.com> Date: Wed, 9 Sep 2026 15:13:59 +0300 Subject: [PATCH] Merge pull request #24147 from Nexus-Mods/ci-required-workflow-fix CI Deadlock fix --- .github/workflows/main.yml | 67 ++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 32 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index cfce1e3fb6..442b19e78e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -3,40 +3,8 @@ name: Main on: push: branches: [master, release/*] - paths-ignore: - - "**.md" - - "docs/**" - - "locales/**" - - ".devcontainer/**" - - "docker/**" - - "flatpak/**" - - "*.nix" - - "flake.*" - - "default.nix" - - "shell.nix" - - ".env.example" - - ".envrc" - - ".editorconfig" - - "vortex.bat" - - "translation-strings.txt" pull_request: branches: [master, release/*] - paths-ignore: - - "**.md" - - "docs/**" - - "locales/**" - - ".devcontainer/**" - - "docker/**" - - "flatpak/**" - - "*.nix" - - "flake.*" - - "default.nix" - - "shell.nix" - - ".env.example" - - ".envrc" - - ".editorconfig" - - "vortex.bat" - - "translation-strings.txt" workflow_dispatch: concurrency: @@ -44,7 +12,42 @@ concurrency: cancel-in-progress: true jobs: + # Required status checks stay "Expected" forever when a workflow is skipped by + # paths-ignore, so filter inside the workflow instead: a skipped job reports success. + changes: + runs-on: ubuntu-latest + outputs: + code: ${{ steps.filter.outputs.code }} + steps: + - uses: actions/checkout@v7 + + - uses: dorny/paths-filter@v4 + id: filter + with: + predicate-quantifier: every + filters: | + code: + - "!**.md" + - "!docs/**" + - "!locales/**" + - "!.devcontainer/**" + - "!docker/**" + - "!flatpak/**" + - "!*.nix" + - "!flake.*" + - "!default.nix" + - "!shell.nix" + - "!.env.example" + - "!.envrc" + - "!.editorconfig" + - "!vortex.bat" + - "!translation-strings.txt" + build: + needs: changes + # Fails open: if the filter job itself fails, code is empty and the full build runs. + if: ${{ !cancelled() && (github.event_name == 'workflow_dispatch' || needs.changes.outputs.code != 'false') }} + strategy: matrix: os: [ubuntu-latest, windows-latest]