MISC: Always add script's earnings to its parent #3282
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Validate Title and Check for Dist Changes | |
on: | |
# Triggers the workflow on a few types of pull request events but only for the dev branch | |
pull_request: | |
branches: [dev] | |
types: [opened, edited, synchronize, reopened] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
jobs: | |
checkFiles: | |
name: Check Files and Title | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout files | |
uses: actions/checkout@v4 | |
- name: Check bundle files | |
id: changed-bundle-files | |
uses: tj-actions/changed-files@v44 | |
with: | |
files: | | |
dist/** | |
- name: Warn when dist was changed or title is invalid | |
id: warn-bundles-changed | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
echo "Creating labels for dist modification and for invalid title" | |
LABELDIST="warning: includes dist changes" | |
LABELTITLE="error: invalid title" | |
gh --repo "${{ github.repository }}" label create "$LABELDIST" --description "Dist changes should not normally be included" --color EBAE34 || true | |
gh --repo "${{ github.repository }}" label create "$LABELTITLE" --description "PR title must follow specific format" --color D93F0B || true | |
echo "Determine dist portion of comment text, and add/remove dist label as appropriate" | |
if [ "${{ steps.changed-bundle-files.outputs.any_changed }}" == "false" ]; then | |
echo "No forbidden files included, removing warning" | |
gh --repo "${{ github.repository }}" pr edit "${{ github.event.number }}" --remove-label "$LABELDIST" || true | |
distText="### No dist changes are detected." | |
else | |
echo "Forbidden files included, generating warning" | |
gh --repo "${{ github.repository }}" pr edit "${{ github.event.number }}" --add-label "$LABELDIST" | |
distText="## Dist changes were included. PRs should not normally contain any changes in the dist folder.\n\nReview the changes and ensure that the included dist changes were necessary." | |
fi | |
echo "Validate title" | |
PR_TITLE=$(gh --repo "${{ github.repository }}" pr view "${{ github.event.number }}" --json title --jq .title) | |
TITLE_REGEX="^[0-9A-Z\-]*: .*$" | |
PR_TITLE_VALID=$(echo "$PR_TITLE" | grep -Eq "$TITLE_REGEX" && echo "true" || echo "false") | |
echo "Determine title portion of comment text, and add/remove title label as appropriate" | |
if [ "$PR_TITLE_VALID" == "true" ]; then | |
gh --repo "${{ github.repository }}" pr edit "${{ github.event.number }}" --remove-label "$LABELTITLE" || true | |
commentText="$distText \n\n### Title is valid." | |
makeNewComment="${{ steps.changed-bundle-files.outputs.any_changed }}" | |
else | |
gh --repo "${{ github.repository }}" pr edit "${{ github.event.number }}" --add-label "$LABELTITLE" || true | |
commentText="$distText \n\n## The title \`$PR_TITLE\` should match \`$TITLE_REGEX\`\n\nCATEGORY: Change Description\n\nCATEGORY is something like 'API', 'UI', 'MISC', 'STANEK', etc.\n\nChange Description is what you'd tell a non-contributor to convey what is changed." | |
makeNewComment="true" | |
fi | |
echo "Edit existing comment or make a new one (if no comment present and one of the tests failed)" | |
if [ "$makeNewComment" == "true" ]; then | |
gh --repo "${{ github.repository }}" pr comment "${{ github.event.number }}" --body "$(echo -e $commentText)" --edit-last || gh --repo "${{ github.repository }}" pr comment "${{ github.event.number }}" --body "$(echo -e $commentText)" | |
exit 1 | |
else | |
gh --repo "${{ github.repository }}" pr comment "${{ github.event.number }}" --body "$(echo -e $commentText)" --edit-last || true | |
fi |