mirror of https://github.com/OISF/suricata
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.4 KiB
YAML
81 lines
2.4 KiB
YAML
name: Close updated PRs
|
|
|
|
on:
|
|
pull_request_target:
|
|
types:
|
|
- synchronize
|
|
|
|
permissions:
|
|
actions: write
|
|
contents: read
|
|
issues: write
|
|
pull-requests: write
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
close-updated-pr:
|
|
name: Close updated PR
|
|
if: ${{ github.event.pull_request.draft == false }}
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
REPOSITORY: ${{ github.repository }}
|
|
PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
AFTER: ${{ github.event.after }}
|
|
steps:
|
|
- name: Close updated PR
|
|
run: |
|
|
set -euo pipefail
|
|
|
|
body=$(cat <<'EOF'
|
|
|
|
Closing this pull request: its branch was updated after the pull
|
|
request was opened.
|
|
|
|
Per our workflow, a new pull request is required when changes are made
|
|
to an existing one. Please open a new pull request with the updated
|
|
changes.
|
|
|
|
If you wish to create an in progress pull request that you can push to,
|
|
please create a draft pull request.
|
|
|
|
Please see our [GitHub Pull Request Workflow](https://docs.suricata.io/en/latest/devguide/contributing/github-pr-workflow.html).
|
|
|
|
EOF
|
|
)
|
|
|
|
gh api \
|
|
--method POST \
|
|
"/repos/${REPOSITORY}/issues/${PR_NUMBER}/comments" \
|
|
-f body="${body}" \
|
|
--silent
|
|
|
|
gh api \
|
|
--method PATCH \
|
|
"/repos/${REPOSITORY}/pulls/${PR_NUMBER}" \
|
|
-f state=closed \
|
|
--silent
|
|
|
|
# Run last, after the PR has been closed. Our own run is skipped so this
|
|
# job does not show up as cancelled in the checks list.
|
|
- name: Cancel running workflows for this push
|
|
run: |
|
|
set -euo pipefail
|
|
|
|
for status in queued in_progress; do
|
|
gh api --paginate \
|
|
"/repos/${REPOSITORY}/actions/runs?head_sha=${AFTER}&status=${status}" \
|
|
--jq '.workflow_runs[].id' | while read -r run_id; do
|
|
if [ "${run_id}" = "${GITHUB_RUN_ID}" ]; then
|
|
continue
|
|
fi
|
|
gh api \
|
|
--method POST \
|
|
"/repos/${REPOSITORY}/actions/runs/${run_id}/cancel" \
|
|
--silent || true
|
|
done
|
|
done
|