From 5da7f07fbea25a83a15f13241039f5fedbda51de Mon Sep 17 00:00:00 2001 From: Otto Richter Date: Thu, 31 Oct 2024 14:47:41 +0100 Subject: [PATCH] chore(ci): Enforce test label with CI check - test label needs to be set and either present, not-needed or manual - if manual test label is set, PR description needs to contain a heading (defined by '#') starting with "Test" (e.g. "Test instructions", "Testing" etc) --- .forgejo/workflows/merge-requirements.yml | 44 +++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 .forgejo/workflows/merge-requirements.yml diff --git a/.forgejo/workflows/merge-requirements.yml b/.forgejo/workflows/merge-requirements.yml new file mode 100644 index 0000000000..43defb1322 --- /dev/null +++ b/.forgejo/workflows/merge-requirements.yml @@ -0,0 +1,44 @@ +# Copyright 2024 The Forgejo Authors +# SPDX-License-Identifier: MIT + +name: requirements + +on: + pull_request: + types: + - labeled + - edited + - opened + - synchronize + +jobs: + testing: + runs-on: docker + container: + image: 'code.forgejo.org/oci/node:20-bookworm' + steps: + - name: Debug output + run: | + cat <<'EOF' + ${{ toJSON(github.event.pull_request) }} + EOF + - name: Missing test label + if: > + !( + contains(toJSON(github.event.pull_request.labels), 'test/present') + || contains(toJSON(github.event.pull_request.labels), 'test/not-needed') + || contains(toJSON(github.event.pull_request.labels), 'test/manual') + ) + run: | + echo "Test label must be set to either 'present', 'not-needed' or 'manual'." + exit 1 + - name: Missing manual test instructions + if: > + ( + contains(toJSON(github.event.pull_request.labels), 'test/manual') + && !contains(toJSON(github.event.pull_request.body), '# Test') + ) + run: | + echo "Manual test label is set. The PR description needs to contain test steps introduced by a heading like:" + echo "# Testing" + exit 1