Skip to content

Bump minimatch from 3.1.2 to 3.1.5 in the npm_and_yarn group across 1 directory #122

Bump minimatch from 3.1.2 to 3.1.5 in the npm_and_yarn group across 1 directory

Bump minimatch from 3.1.2 to 3.1.5 in the npm_and_yarn group across 1 directory #122

name: Validate PR Version Labels
on:
pull_request:
branches: [main]
types:
- opened
- synchronize
- edited
- labeled # important to catch version label additions
- unlabeled
- reopened
permissions:
contents: read
pull-requests: write
jobs:
validate-version-labels:
name: Validate PR Version Labels
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Get all labels from PR
id: get_labels
run: |
echo "## PR Labels" >> "$GITHUB_STEP_SUMMARY"
## Newline separated list of all labels on the PR
all_labels=$(jq -r '.pull_request.labels[].name' < "$GITHUB_EVENT_PATH" 2>/dev/null || true)
if [ -z "$all_labels" ]; then
echo "- (none)" >> "$GITHUB_STEP_SUMMARY"
echo "::error title=No Labels::No Labels were found on this PR. A version label is required."
exit 1
else
while IFS= read -r lbl; do
[ -z "$lbl" ] && continue
echo "- \`$lbl\`" >> "$GITHUB_STEP_SUMMARY"
done <<< "$all_labels"
fi
echo "$all_labels" > all_labels.txt
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
- name: Label Validation
id: validate
run: node scripts/internal-ci/validate-version-labels/index.js all_labels.txt
- name: Validation Job Summary
if: ${{ always() }}
env:
NO_LABELS: ${{ steps.get_labels.outcome == 'failure' }}
IS_VALID: ${{ steps.validate.outputs.isValid }}
VALIDATION_MESSAGE: ${{ steps.validate.outputs.validationMessage }}
INVALID_VERSION_LABELS: ${{ steps.validate.outputs.invalidVersionLabels }}
HAS_UNTRACKED_VERSION: ${{ steps.validate.outputs.hasUntrackedVersion }}
COMPONENT_VERSION_LABELS: ${{ steps.validate.outputs.componentVersionLabels }}
INVALID_COMPONENTS: ${{ steps.validate.outputs.invalidComponents }}
MISSING_CHANGELOGS: ${{ steps.validate.outputs.missingChangelogs }}
run: |
echo "## Validation Outcome" >> "$GITHUB_STEP_SUMMARY"
if [ "${{ env.NO_LABELS }}" == "true" ]; then
echo "❌ No labels found on the PR. Add at least one version label." >> "$GITHUB_STEP_SUMMARY"
fi
if [ "${{ env.IS_VALID }}" == "false" ]; then
echo "❌ Version label validation failed." >> "$GITHUB_STEP_SUMMARY"
if [ -n "${{ env.VALIDATION_MESSAGE }}" ]; then
echo "${{ env.VALIDATION_MESSAGE }}" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
fi
if [ -n "${{ env.INVALID_VERSION_LABELS }}" ]; then
echo "**Invalid version labels**: ${{ env.INVALID_VERSION_LABELS }}" >> "$GITHUB_STEP_SUMMARY"
fi
if [ -n "${{ env.INVALID_COMPONENTS }}" ]; then
echo "**Nonexistent/Invalid components**: ${{ env.INVALID_COMPONENTS }}" >> "$GITHUB_STEP_SUMMARY"
fi
if [ -n "${{ env.MISSING_CHANGELOGS }}" ]; then
echo "**Components missing changelogs/entries**: ${{ env.MISSING_CHANGELOGS }}" >> "$GITHUB_STEP_SUMMARY"
fi
else
echo "✅ Version label validation passed" >> "$GITHUB_STEP_SUMMARY"
fi
echo -e "\n**Untracked Version**: ${{ env.HAS_UNTRACKED_VERSION }}" >> "$GITHUB_STEP_SUMMARY"
if [ -n "${{ env.COMPONENT_VERSION_LABELS }}" ]; then
echo "**Component Versions**: ${{ env.COMPONENT_VERSION_LABELS }}" >> "$GITHUB_STEP_SUMMARY"
fi
- name: Write Tags Job Summary
id: tags_summary
env:
HAS_UNTRACKED_VERSION: ${{ steps.validate.outputs.hasUntrackedVersion }}
VALID_COMPONENTS: ${{ steps.validate.outputs.validComponents }}
run: |
set -x
summary="## Tags\n"
if [ "${HAS_UNTRACKED_VERSION}" = "true" ]; then
summary+="- No Tags will be created on main"
else
summary+="The following tags will be created on main after merge\n\n"
echo $VALID_COMPONENTS
IFS=',' read -ra components <<< "$VALID_COMPONENTS"
for component_version in "${components[@]}"; do
summary+="🏷️ \`$component_version\`\n"
done
# Remove trailing newline
summary="${summary%\\n}"
fi
echo -e "$summary" >> "$GITHUB_STEP_SUMMARY"
# Replace any literal \n with real newlines for correct PR comment formatting
summary_with_eol="${summary//\\n/$'\n'}"
echo "summary<<EOF" >> "$GITHUB_OUTPUT"
echo "$summary_with_eol" >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"
- name: Write Tags to PR Comment
uses: ./.github/actions/upsert-pr-comment
with:
pr-number: ${{ github.event.pull_request.number }}
github-token: ${{ secrets.GITHUB_TOKEN }}
comment-marker: version-summary
body-content: ${{ steps.tags_summary.outputs.summary }}