From e9f8ca1336f34f95668f060f8b8c05fc9b430ac0 Mon Sep 17 00:00:00 2001 From: Martin Pugh Date: Tue, 16 Jun 2020 13:53:35 +0200 Subject: [PATCH 1/3] Add label enforcement --- .gitlab-ci.yml | 11 ++++++++ .maintain/gitlab/check_labels.sh | 46 ++++++++++++++++++++++++++++++++ .maintain/gitlab/lib.sh | 8 ++++-- 3 files changed, 63 insertions(+), 2 deletions(-) create mode 100755 .maintain/gitlab/check_labels.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bd4fc65e85d61..4c8a201dd3ccb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -721,3 +721,14 @@ validator 4 4: <<: *validator-deploy script: - ./.maintain/flamingfir-deploy.sh flamingfir-validator4 + +#### stage: .post + +check-labels: + stage: .post + image: paritytech/tools:latest + <<: *kubernetes-env + only: + - /^[0-9]+$/ + script: + - ./.maintain/gitlab/check_labels.sh diff --git a/.maintain/gitlab/check_labels.sh b/.maintain/gitlab/check_labels.sh new file mode 100755 index 0000000000000..0a754bd9a694d --- /dev/null +++ b/.maintain/gitlab/check_labels.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +#shellcheck source=lib.sh +source "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )/lib.sh" + +ensure_labels() { + for label in "$@"; do + if has_label 'paritytech/polkadot' "$CI_COMMIT_BRANCH" "$label"; then + return 0 + fi + done + return 1 +} + +# Must have one of the following labels +releasenotes_labels=( + 'B0-silent' + 'B3-apinoteworthy' + 'B5-clientnoteworthy' + 'B7-runtimenoteworthy' +) + +criticality_labels=( + 'C1-low' + 'C3-medium' + 'C7-high' + 'C9-critical' +) + +echo "[+] Checking release notes (B) labels for $CI_COMMIT_BRANCH" +if ensure_labels "${releasenotes_labels[@]}"; then + echo "[+] Release notes label detected. All is well." +else + echo "[!] Release notes label not detected. Please add one of: ${releasenotes_labels[*]}" + exit 1 +fi + +echo "[+] Checking release criticality (C) labels for $CI_COMMIT_BRANCH" +if ensure_labels "${criticality_labels[@]}"; then + echo "[+] Release criticality label detected. All is well." +else + echo "[!] Release criticality label not detected. Please add one of: ${criticality_labels[*]}" + exit 1 +fi + +exit 0 diff --git a/.maintain/gitlab/lib.sh b/.maintain/gitlab/lib.sh index ecc9a5f54288c..a7a83baaea746 100755 --- a/.maintain/gitlab/lib.sh +++ b/.maintain/gitlab/lib.sh @@ -66,8 +66,12 @@ has_label(){ repo="$1" pr_id="$2" label="$3" - out=$(curl -H "Authorization: token $GITHUB_RELEASE_TOKEN" -s "$api_base/$repo/pulls/$pr_id") - [ -n "$(echo "$out" | jq ".labels | .[] | select(.name==\"$label\")")" ] + if [ -n "$GITHUB_RELEASE_TOKEN" ]; then + out=$(curl -H "Authorization: token $GITHUB_RELEASE_TOKEN" -s "$api_base/$repo/pulls/$pr_id") + else + out=$(curl -H "Authorization: token $GITHUB_PR_TOKEN" -s "$api_base/$repo/pulls/$pr_id") + fi + [ -n "$(echo "$out" | tr -d '\r\n' | jq ".labels | .[] | select(.name==\"$label\")")" ] } # Formats a message into a JSON string for posting to Matrix From eaad279206a3bd0dc891910a4031f92b2aeb8cee Mon Sep 17 00:00:00 2001 From: Martin Pugh Date: Tue, 16 Jun 2020 13:53:35 +0200 Subject: [PATCH 2/3] fix .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4c8a201dd3ccb..c4442dece99ad 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -727,7 +727,7 @@ validator 4 4: check-labels: stage: .post image: paritytech/tools:latest - <<: *kubernetes-env + <<: *kubernetes-build only: - /^[0-9]+$/ script: From 69fc0629396381d59c20d52c6d4a0081a4b324de Mon Sep 17 00:00:00 2001 From: Martin Pugh Date: Tue, 16 Jun 2020 14:57:47 +0200 Subject: [PATCH 3/3] update check_labels.sh --- .maintain/gitlab/check_labels.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.maintain/gitlab/check_labels.sh b/.maintain/gitlab/check_labels.sh index 0a754bd9a694d..5ab099b38291c 100755 --- a/.maintain/gitlab/check_labels.sh +++ b/.maintain/gitlab/check_labels.sh @@ -5,7 +5,7 @@ source "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )/lib.sh ensure_labels() { for label in "$@"; do - if has_label 'paritytech/polkadot' "$CI_COMMIT_BRANCH" "$label"; then + if has_label 'paritytech/substrate' "$CI_COMMIT_BRANCH" "$label"; then return 0 fi done