Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

reject PR if identical to pull_request_template.md #281

Open
wants to merge 11 commits into
base: v2.x/staging
Choose a base branch
from
92 changes: 63 additions & 29 deletions .github/workflows/build-core.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,32 +67,69 @@ jobs:
echo "ERROR: CHANGELOG.md has not been updated."
echo "::set-output name=check_commit::false"
fi
- name: Extract changelog info
- name: Compare PR description with template
if: steps.check-changelog.outputs.check_commit == 'false'
env:
PR_DESCRIPTION: ${{ github.event.pull_request.body }}
run: |
# Safely print the PR description using Node.js
node -e 'const prDesc = process.env.PR_DESCRIPTION; console.log("----- PR Description Start -----\n" + prDesc + "\n----- PR Description End -----");'
echo "$PR_DESCRIPTION" > /tmp/pr_description.txt
echo "PR DESCRIPTION saved to /tmp/pr_description.txt."

# Save the template content to a file without modifying it
cat .github/pull_request_template.md > /tmp/template_content.txt
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there's no reason to do this? it's already a file.

echo "Template content saved to /tmp/template_content.txt."


# Use diff to compare the two files
if diff -wB /tmp/pr_description.txt /tmp/template_content.txt > /dev/null; then
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just diff .github/pull_request_template.md directly.

echo "ERROR: PR description is identical to the template."
exit 1
else
echo "PR description and template are different."
fi

- name: Extract changelog info using Node.js
if: steps.check-changelog.outputs.check_commit == 'false'
id: extract-changelog
run: |
PR_DESCRIPTION="${{ github.event.pull_request.body }}"
PR_DESCRIPTION=$(cat /tmp/pr_description.txt)

# Check if "changelog:" exists in PR description
if echo "$PR_DESCRIPTION" | grep -q "VERSION:" && echo "$PR_DESCRIPTION" | grep -q "CHANGELOG:"; then
# Extract text after "changelog:"
CHANGELOG_TEXT=$(echo $PR_DESCRIPTION | sed -n 's/.*CHANGELOG: \(.*\)/\1/p')

# Extract content after "changelog:" using Node.js
CHANGELOG_TEXT=$(node -e "const lines = process.env.PR_DESCRIPTION.split('\n'); \
for (const line of lines) { \
if (line.startsWith('CHANGELOG: ')) { \
console.log(line.substring('CHANGELOG: '.length)); \
break; \
} \
}")

# Extract VERSION: from PR description
VERSION=$(echo "$PR_DESCRIPTION" | grep -oP 'VERSION:\s*\Kv\d+\.\d+\.\d+')

echo "Extracted changelog: $CHANGELOG_TEXT"
echo "::set-output name=changelog::$CHANGELOG_TEXT"
echo "::set-output name=changelog::$(echo "$CHANGELOG_TEXT" | base64)"
echo "::set-output name=version::$VERSION"

else
echo -e "No changelog and version information found in PR description please add them.\n Expected Format:\n VERSION:vX.XX.X\n CHANGELOG:This is changelog note.\n
To re-run the action, just make a push or commit after updating the PR description or updating the changelog via a manual file changing commit."
echo -e "No changelog and version information found in PR description. Please add them.\nExpected Format:\nVERSION:vX.XX.X\nCHANGELOG:This is changelog note.\nTo re-run the action, just make a push or commit after updating the PR description or updating the changelog via a manual file changing commit."
exit 1
fi

env:
PR_DESCRIPTION: ${{ env.PR_DESCRIPTION }}

- name: Check PR body against changelog
if: steps.check-changelog.outputs.check_commit == 'false'
run: |
ESCAPED_CHANGELOG="${{ steps.extract-changelog.outputs.changelog }}"
ESCAPED_CHANGELOG=$(echo "${{ steps.extract-changelog.outputs.changelog }}" | base64 -d)
echo "$ESCAPED_CHANGELOG"
ESCAPED_CHANGELOG=$(echo "$ESCAPED_CHANGELOG" | sed "s/'/\\\\'/g")
VERSION="${{ steps.extract-changelog.outputs.version }}"

if ! grep -Fq "$ESCAPED_CHANGELOG" CHANGELOG.md; then
# Check if version exists in CHANGELOG.md
if grep -q "^## $VERSION" CHANGELOG.md; then
Expand All @@ -110,6 +147,7 @@ jobs:
git commit -s -m "Update changelog with PR #${{ github.event.pull_request.number }} description"
git push
fi

- name: check for changes
id: check-change
run: |
Expand All @@ -118,25 +156,23 @@ jobs:
echo "::set-output name=change_detected::false"
else
echo "::set-output name=change_detected::true"
fi

check_changelog:
if: github.event_name == 'pull_request'
needs: update-changelog
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Verify Changelog update
run: |
if [ "${{ needs.update-changelog.outputs.was_updated }}" != "true" ]; then
echo "CHANGELOG.md not updated, please update CHANGELOG.md with the changes made in the pull request"
exit 1
else
echo "changelog was updated successfully."
fi
check_changelog:
if: github.event_name == 'pull_request'
needs: update-changelog
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Verify Changelog update
run: |
if [ "${{ needs.update-changelog.outputs.was_updated }}" != "true" ]; then
echo "CHANGELOG.md not updated, please update CHANGELOG.md with the changes made in the pull request"
exit 1
else
echo "changelog was updated successfully."
fi
build:
runs-on: ubuntu-latest
needs: check-permission
Expand All @@ -152,7 +188,6 @@ jobs:
key: ${{ runner.os }}-build-cache-node-modules-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-cache-node-modules-

- name: '[Prep 2] Setup Node'
uses: actions/setup-node@v2
with:
Expand Down Expand Up @@ -190,5 +225,4 @@ jobs:
pax-name: zlux-core

- name: '[Prep 7] deploy'
uses: zowe-actions/zlux-builds/core/[email protected]/main

uses: zowe-actions/zlux-builds/core/[email protected]/main
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
All notable changes to the Zlux App Server package will be documented in this file.

## v2.12.0

- enhancement: new versions of components can change the location of their plugins, as the app-server will now re-inspect the plugin locations on each startup. (#280)
- bugfix: Removed error message "components/app-server/bin/configure.sh 26: .: FSUM6807 expression syntax error" seen in startup of Zowe in v2.11.0, caused by incorrect shell syntax. (#283)


## v2.11.0

- Bugfix: The server couldn't load more than one certificate authority specified within the zowe.certificate.pem.certificateAuthorities section under any condition. Now, it is supported regardless of if the section is an array or a comma-separated string. (#266)
Expand Down
Loading