diff options
author | Austin S. Hemmelgarn <austin@netdata.cloud> | 2020-01-08 06:22:18 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-08 06:22:18 -0500 |
commit | 7597c80d2706f058d609b4d839100faa70654f4d (patch) | |
tree | 8a69b59c6885c279c32158d6bcc257a0447b4734 /.travis | |
parent | 7b8c3863557576e7433d381fd05c95136a26e1fc (diff) |
Switch PR labeling to use GitHub Actions. (#7630)
This decouples the PR labeling process from the main CI process, allowing
them to run completely independenly of each other.
The new labeling configuration is based on copying, extending, and
correcting the existing labeling rules in the `labeler.sh` script which
the commit is removing.
Labeling is configured through `.github/labeler.yml` file. Check there
for info on the exact format.
The exact configuration being used will update labels on PR's whenever
one is opened, updated, reopened, or marked ready for review. It will
not remove existing labels from the PR, only add new ones.
Diffstat (limited to '.travis')
-rwxr-xr-x | .travis/labeler.sh | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/.travis/labeler.sh b/.travis/labeler.sh deleted file mode 100755 index 7863084d90..0000000000 --- a/.travis/labeler.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash - -# This is a simple script which should apply labels to unlabelled issues from last 3 days. -# It will soon be deprecated by GitHub Actions so no futher development on it is planned. - -# Previously this was using POST to only add labels. But this method seems to be failing with larger number of requests -new_labels() { - ISSUE="$1" - URL="https://api.github.com/repos/netdata/netdata/issues/$ISSUE/labels" - # deduplicate array and add quotes - SET=( $(for i in "${@:2}"; do [ "$i" != "" ] && echo "\"$i\""; done | sort -u) ) - # implode array to string - LABELS="${SET[*]}" - # add commas between quotes (replace spaces) - LABELS="${LABELS//\" \"/\",\"}" - # remove duplicate quotes in case parameters were already quoted - LABELS="${LABELS//\"\"/\"}" - echo "-------- Assigning labels to #${ISSUE}: ${LABELS} --------" - curl -H "Authorization: token $GITHUB_TOKEN" -d "{\"labels\":[${LABELS}]}" -X PUT "${URL}" &>/dev/null -} - -if [ "$GITHUB_TOKEN" == "" ]; then - echo "GITHUB_TOKEN is needed" - exit 1 -fi - -if ! [ -x "$(command -v hub)" ]; then - echo "===== Download HUB =====" - HUB_VERSION=${HUB_VERSION:-"2.5.1"} - wget "https://github.com/github/hub/releases/download/v${HUB_VERSION}/hub-linux-amd64-${HUB_VERSION}.tgz" -O "/tmp/hub-linux-amd64-${HUB_VERSION}.tgz" - tar -C /tmp -xvf "/tmp/hub-linux-amd64-${HUB_VERSION}.tgz" &>/dev/null - export PATH=$PATH:"/tmp/hub-linux-amd64-${HUB_VERSION}/bin" -fi - -echo "===== Looking up available labels =====" -LABELS_FILE=/tmp/labels -hub issue labels >$LABELS_FILE - -# Change all 'area' labels assigned to PR saving non-area labels. -echo "===== Categorizing PRs =====" -NEW_LABELS=/tmp/new_labels -for PR in $(hub pr list -s all -f "%I%n" -L 10); do - echo "----- Processing PR #$PR -----" - echo "" >$NEW_LABELS - NEW_SET="" - DIFF_URL="https://github.com/netdata/netdata/pull/$PR.diff" - for FILE in $(curl -L "${DIFF_URL}" 2>/dev/null | grep "diff --git a/" | cut -d' ' -f3 | sort | uniq); do - LABEL="" - case "${FILE}" in - *".md") AREA="docs" ;; - *"/collectors/python.d.plugin/"*) AREA="external/python" ;; - *"/collectors/charts.d.plugin/"*) AREA="external" ;; - *"/collectors/node.d.plugin/"*) AREA="external" ;; - *"/.travis"*) AREA="ci" ;; - *"/.github/*.md"*) AREA="docs" ;; - *"/.github/"*) AREA="ci" ;; - *"/build/"*) AREA="packaging" ;; - *"/contrib/"*) AREA="packaging" ;; - *"/diagrams/"*) AREA="docs" ;; - *"/installer/"*) AREA="packaging" ;; - *"/makeself/"*) AREA="packaging" ;; - *"/system/"*) AREA="packaging" ;; - *"/netdata-installer.sh"*) AREA="packaging" ;; - *) AREA=$(echo "$FILE" | cut -d'/' -f2) ;; - esac - LABEL="area/$AREA" - echo "Selecting $LABEL due to $FILE" - if grep "$LABEL" "$LABELS_FILE"; then - echo "$LABEL" >>$NEW_LABELS - if [[ $LABEL =~ "external" ]]; then - echo "area/collectors" >>$NEW_LABELS - fi - else - echo "-------- Label '$LABEL' not available --------" - fi - done - NEW_SET=$(sort $NEW_LABELS | uniq) - if [ ! -z "$NEW_SET" ]; then - PREV=$(curl -H "Authorization: token $GITHUB_TOKEN" "https://api.github.com/repos/netdata/netdata/issues/$PR/labels" 2>/dev/null | jq '.[].name' | grep -v "area") - new_labels "$PR" ${NEW_SET} "${PREV[*]}" - fi -done |