From 1bc5e3256fcba366397424100b744fb6adba8926 Mon Sep 17 00:00:00 2001 From: brandon s allbery kf8nh Date: Tue, 17 Sep 2024 20:23:03 -0400 Subject: [PATCH] add missing sdist skip job There's little point in having a skip-on-docs trigger if there's no alternative, cf. the comment in validate.yml. (cherry picked from commit 01b9fdb8bfe960baea8c1a6ec765c20216319368) --- .github/workflows/check-sdist.skip.yml | 48 ++++++++++++++++++++++++++ .github/workflows/check-sdist.yml | 14 ++++++++ 2 files changed, 62 insertions(+) create mode 100644 .github/workflows/check-sdist.skip.yml diff --git a/.github/workflows/check-sdist.skip.yml b/.github/workflows/check-sdist.skip.yml new file mode 100644 index 00000000000..522c9896f0d --- /dev/null +++ b/.github/workflows/check-sdist.skip.yml @@ -0,0 +1,48 @@ +name: Check sdist Skip + +# This Workflow is special and contains a workaround for a known limitation of GitHub CI. +# +# The problem: We don't want to run the "check sdist" jobs on PRs which contain only changes +# to the docs, since these jobs take a long time to complete without providing any benefit. +# We therefore use path-filtering in the workflow triggers for the check sdist jobs, namely +# "paths-ignore: doc/**". But the "Check sdist post job" is a required job, therefore a PR cannot +# be merged unless the "Bootstrap post job" completes succesfully, which it doesn't do if we +# filter it out. +# +# The solution: We use a second job with the same name which always returns the exit code 0. +# The logic implemented for "required" workflows accepts if 1) at least one job with that name +# runs through, AND 2) If multiple jobs of that name exist, then all jobs of that name have to +# finish successfully. +on: + push: + paths: + - 'doc/**' + - '**/README.md' + - 'CONTRIBUTING.md' + - "changelog.d/**" + # only top level for these, because various test packages have them too + - "*/ChangeLog.md" + - "*/changelog.md" + - "release-notes/**" + branches: + - master + pull_request: + paths: + - 'doc/**' + - '**/README.md' + - 'CONTRIBUTING.md' + - "changelog.d/**" + - "*/ChangeLog.md" + - "*/changelog.md" + - "release-notes/**" + release: + types: + - created + +jobs: + check-sdist-post-job: + if: always() + name: Check sdist post job + runs-on: ubuntu-latest + steps: + - run: exit 0 diff --git a/.github/workflows/check-sdist.yml b/.github/workflows/check-sdist.yml index 3b891465ecc..f8cce8d41a9 100644 --- a/.github/workflows/check-sdist.yml +++ b/.github/workflows/check-sdist.yml @@ -89,3 +89,17 @@ jobs: echo No matching bootlib Cabal version to test against. exit 0 fi + + check-sdist-post-job: + if: always() + name: Check sdist post job + runs-on: ubuntu-latest + # IMPORTANT! Any job added to the workflow should be added here too + needs: [dogfood-sdists] + + steps: + - run: | + echo "jobs info: ${{ toJSON(needs) }}" + - if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') + run: exit 1 +