diff --git a/.github/workflows/merge-label.yml b/.github/workflows/merge-label.yml new file mode 100644 index 0000000..c518450 --- /dev/null +++ b/.github/workflows/merge-label.yml @@ -0,0 +1,32 @@ +name: Require merge label + +on: + pull_request: + branches: [ master ] + types: [opened, synchronize, reopened, labeled, unlabeled] + +jobs: + require-merge-label: + name: Require merge label + runs-on: ubuntu-latest + steps: + - name: Check merge label + env: + LABELS: ${{ toJSON(github.event.pull_request.labels.*.name) }} + REQUIRED_LABEL: to be merged + run: | + python3 - <<'PY' + import json + import os + import sys + + labels = json.loads(os.environ["LABELS"]) + required_label = os.environ["REQUIRED_LABEL"] + + if required_label in labels: + print("Required merge label found: {}".format(required_label)) + sys.exit(0) + + print("Missing required merge label: {}".format(required_label)) + sys.exit(1) + PY diff --git a/.github/workflows/python2-app.yml b/.github/workflows/python2-app.yml index bfce20f..253a922 100644 --- a/.github/workflows/python2-app.yml +++ b/.github/workflows/python2-app.yml @@ -8,9 +8,13 @@ on: branches: [ master ] pull_request: branches: [ master ] + types: [opened, synchronize, reopened, labeled, unlabeled] jobs: build: + if: | + github.event_name == 'push' || + contains(github.event.pull_request.labels.*.name, 'to be merged') runs-on: ubuntu-latest diff --git a/.github/workflows/python3-app.yml b/.github/workflows/python3-app.yml index 0722aee..9bf1dac 100644 --- a/.github/workflows/python3-app.yml +++ b/.github/workflows/python3-app.yml @@ -8,9 +8,13 @@ on: branches: [ master ] pull_request: branches: [ master ] + types: [opened, synchronize, reopened, labeled, unlabeled] jobs: build: + if: | + github.event_name == 'push' || + contains(github.event.pull_request.labels.*.name, 'to be merged') runs-on: ubuntu-latest