Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Commit

Permalink
[CI] Add label enforcement (#6365)
Browse files Browse the repository at this point in the history
* Add label enforcement

* fix .gitlab-ci.yml

* update check_labels.sh
  • Loading branch information
s3krit committed Jun 16, 2020
1 parent 6199d86 commit 54d1c5c
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 2 deletions.
11 changes: 11 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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-build
only:
- /^[0-9]+$/
script:
- ./.maintain/gitlab/check_labels.sh
46 changes: 46 additions & 0 deletions .maintain/gitlab/check_labels.sh
Original file line number Diff line number Diff line change
@@ -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/substrate' "$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
8 changes: 6 additions & 2 deletions .maintain/gitlab/lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 54d1c5c

Please sign in to comment.