Skip to content

Test labelling enforcement #4

Test labelling enforcement

Test labelling enforcement #4

name: PR and Issue Validation
on:
pull_request:
types: [opened, edited, labeled, unlabeled, synchronize]
issues:
types: [opened, edited, labeled, unlabeled]
jobs:
validate-pr:
runs-on: ubuntu-latest
steps:
- name: Check out the repository
uses: actions/checkout@v2
- name: Validate PR has labels
id: check_labels
run: |
PR_LABELS=$(jq -r '.pull_request.labels | length' $GITHUB_EVENT_PATH)
if [ "$PR_LABELS" -eq "0" ]; then
echo "No labels found on the pull request."
exit 1
fi
- name: Validate PR is linked to an issue
id: check_linked_issues
run: |
PR_NUMBER=$(jq -r '.pull_request.number' $GITHUB_EVENT_PATH)
REPO_OWNER=$(jq -r '.repository.owner.login' $GITHUB_EVENT_PATH)
REPO_NAME=$(jq -r '.repository.name' $GITHUB_EVENT_PATH)
LINKED_ISSUES=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/issues/$PR_NUMBER/timeline" \
| jq '[.[] | select(.event == "cross-referenced") | .source.issue.number] | length')
if [ "$LINKED_ISSUES" -eq "0" ]; then
echo "No linked issues found in the pull request."
exit 1
fi
validate-issue:
runs-on: ubuntu-latest
steps:
- name: Check out the repository
uses: actions/checkout@v2
- name: Validate issue has labels
id: check_labels
run: |
ISSUE_LABELS=$(jq -r '.issue.labels | length' $GITHUB_EVENT_PATH)
if [ "$ISSUE_LABELS" -eq "0" ]; then
echo "No labels found on the issue."
exit 1
fi