Merge pull request #15731 from miri64/dist/enh/pr_check-annotate
dist/tools/pr_check: cleanup and annotate errors in Github Action
This commit is contained in:
commit
aa19614a6c
3
.github/workflows/check-pr.yml
vendored
3
.github/workflows/check-pr.yml
vendored
@ -32,8 +32,5 @@ jobs:
|
|||||||
run:
|
run:
|
||||||
git fetch origin '${{ github.base_ref }}:${{ github.base_ref }}'
|
git fetch origin '${{ github.base_ref }}:${{ github.base_ref }}'
|
||||||
- name: Run checks
|
- name: Run checks
|
||||||
env: # enforce deactivation of label check in pr_check
|
|
||||||
TRAVIS_PULL_REQUEST:
|
|
||||||
CI_PULL_NR:
|
|
||||||
run: |
|
run: |
|
||||||
./dist/tools/${{ matrix.check }}/check.sh "${{ github.base_ref }}"
|
./dist/tools/${{ matrix.check }}/check.sh "${{ github.base_ref }}"
|
||||||
|
|||||||
17
dist/tools/pr_check/README.md
vendored
17
dist/tools/pr_check/README.md
vendored
@ -1,18 +1,17 @@
|
|||||||
# About
|
# About
|
||||||
|
|
||||||
This script checks if a Pull Request needs squashing or if it is waiting for
|
This script checks if a Pull Request needs squashing.
|
||||||
another Pull Request.
|
|
||||||
|
|
||||||
# Usage
|
# Usage
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./check.sh [<master branch>]
|
./check.sh [<branch>]
|
||||||
```
|
```
|
||||||
|
|
||||||
The optional `<master branch>` parameter refers to the branch the pull request's
|
The `<branch>` parameter refers to the branch the pull request's branch branched
|
||||||
branch branched from. The script will output all commits marked as squashable
|
from. The script will output all commits marked as squashable from `HEAD` to the
|
||||||
from `HEAD` to the merge-base with `<master branch>`. The default for
|
merge-base with `<branch>`. The default for `<branch>` is `master`.
|
||||||
`<master branch>` is `master`.
|
|
||||||
|
|
||||||
A commit is marked as squashable if it contains the keywords SQUASH or FIX
|
A commit is marked as squashable if it contains the keywords SQUASH, FIX or
|
||||||
(case insensitive) within the first five characters of it's subject title.
|
REMOVE ME (case insensitive) within the first five characters of it's subject
|
||||||
|
title.
|
||||||
|
|||||||
32
dist/tools/pr_check/check.sh
vendored
32
dist/tools/pr_check/check.sh
vendored
@ -7,14 +7,17 @@
|
|||||||
# directory for more details.
|
# directory for more details.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
. "$(dirname "$0")/../ci/github_annotate.sh"
|
||||||
|
|
||||||
: "${RIOTBASE:=$(cd $(dirname $0)/../../../; pwd)}"
|
: "${RIOTBASE:=$(cd $(dirname $0)/../../../; pwd)}"
|
||||||
cd $RIOTBASE
|
cd $RIOTBASE
|
||||||
|
|
||||||
: "${RIOTTOOLS:=${RIOTBASE}/dist/tools}"
|
: "${RIOTTOOLS:=${RIOTBASE}/dist/tools}"
|
||||||
. "${RIOTTOOLS}"/pr_check/check_labels.sh
|
|
||||||
|
|
||||||
EXIT_CODE=0
|
EXIT_CODE=0
|
||||||
|
|
||||||
|
github_annotate_setup
|
||||||
|
|
||||||
if tput colors &> /dev/null && [ $(tput colors) -ge 8 ]; then
|
if tput colors &> /dev/null && [ $(tput colors) -ge 8 ]; then
|
||||||
CERROR="\e[1;31m"
|
CERROR="\e[1;31m"
|
||||||
CRESET="\e[0m"
|
CRESET="\e[0m"
|
||||||
@ -40,21 +43,24 @@ SQUASH_COMMITS="$(git log $(git merge-base HEAD "${RIOT_MASTER}")...HEAD --prett
|
|||||||
keyword_filter)"
|
keyword_filter)"
|
||||||
|
|
||||||
if [ -n "${SQUASH_COMMITS}" ]; then
|
if [ -n "${SQUASH_COMMITS}" ]; then
|
||||||
echo -e "${CERROR}Pull request needs squashing:${CRESET}" 1>&2
|
if github_annotate_is_on; then
|
||||||
echo -e "${SQUASH_COMMITS}"
|
echo "${SQUASH_COMMITS}" | while read commit; do
|
||||||
|
ANNOTATION="Commit needs to be squashed: \"${commit}\""
|
||||||
|
ANNOTATION="${ANNOTATION}\n\nPLEASE ONLY SQUASH WHEN ASKED BY A "
|
||||||
|
ANNOTATION="${ANNOTATION}MAINTAINER!"
|
||||||
|
ANNOTATION="${ANNOTATION}\nSee: "
|
||||||
|
ANNOTATION="${ANNOTATION}https://github.com/RIOT-OS/RIOT/blob/master/CONTRIBUTING.md#squash-commits-after-review"
|
||||||
|
github_annotate_error_no_file "${ANNOTATION}"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo -e "${CERROR}Pull request needs squashing:${CRESET}" 1>&2
|
||||||
|
echo -e "${SQUASH_COMMITS}"
|
||||||
|
fi
|
||||||
EXIT_CODE=1
|
EXIT_CODE=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$TRAVIS_PULL_REQUEST" -o -n "$CI_PULL_NR" ]; then
|
github_annotate_teardown
|
||||||
if check_gh_label "CI: needs squashing"; then
|
|
||||||
echo -e "${CERROR}Pull request needs squashing according to its labels set on GitHub${CRESET}"
|
|
||||||
EXIT_CODE=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if check_gh_label "State: waiting for other PR"; then
|
github_annotate_report_last_run
|
||||||
echo -e "${CERROR}Pull request is waiting for another pull request according to its labels set on GitHub${CRESET}"
|
|
||||||
EXIT_CODE=1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit ${EXIT_CODE}
|
exit ${EXIT_CODE}
|
||||||
|
|||||||
36
dist/tools/pr_check/check_labels.sh
vendored
36
dist/tools/pr_check/check_labels.sh
vendored
@ -1,36 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# Copyright (C) 2014 Martine Lenders <mlenders@inf.fu-berlin.de>
|
|
||||||
#
|
|
||||||
# This file is subject to the terms and conditions of the GNU Lesser
|
|
||||||
# General Public License v2.1. See the file LICENSE in the top level
|
|
||||||
# directory for more details.
|
|
||||||
#
|
|
||||||
|
|
||||||
# The following script part has been moved here from:
|
|
||||||
# ./dist/tools/pr_check/check.sh
|
|
||||||
|
|
||||||
GITHUB_API_HOST="https://api.github.com"
|
|
||||||
GITHUB_REPO="RIOT-OS/RIOT"
|
|
||||||
|
|
||||||
if which wget &> /dev/null; then
|
|
||||||
GET="wget -O -"
|
|
||||||
elif which curl &> /dev/null; then
|
|
||||||
GET="curl"
|
|
||||||
else
|
|
||||||
echo "Script needs wget or curl" >&2
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$TRAVIS_PULL_REQUEST" ]; then
|
|
||||||
LABELS_JSON=$(${GET} "${GITHUB_API_HOST}/repos/${GITHUB_REPO}/issues/${TRAVIS_PULL_REQUEST}/labels" 2> /dev/null)
|
|
||||||
elif [ -n "$CI_PULL_LABELS" ]; then
|
|
||||||
LABELS_JSON="$CI_PULL_LABELS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
check_gh_label() {
|
|
||||||
LABEL="${1}"
|
|
||||||
|
|
||||||
echo "${LABELS_JSON}" | grep -q "${LABEL}"
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user