fix check changeset git action

This commit is contained in:
Ocasta 2025-02-04 21:45:15 -08:00
parent 42c6dc7e94
commit 15c147cf93

View file

@ -18,18 +18,31 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- name: Check for changeset
id: check-changeset
run: |
# Debug info
echo "Current directory: $(pwd)"
echo "PR Base Ref: ${{ github.event.pull_request.base.ref }}"
echo "PR Head Ref: ${{ github.event.pull_request.head.ref }}"
echo "PR Head SHA: ${{ github.event.pull_request.head.sha }}"
echo "Git status:"
git status
# Get list of changed files
CHANGED_FILES=$(git diff --name-only origin/main...HEAD)
git fetch origin ${{ github.event.pull_request.base.ref }}
CHANGED_FILES=$(git diff --name-only origin/${{ github.event.pull_request.base.ref }} HEAD)
echo "Changed files:"
echo "$CHANGED_FILES"
echo "Listing .changeset directory:"
ls -la .changeset/
# Check if any of the changed files are in docs/ or .github/
DOCS_ONLY=true
while IFS= read -r file; do
@ -45,38 +58,62 @@ jobs:
exit 0
fi
# Count number of changeset files (excluding README.md)
CHANGESETS=$(find .changeset -name "*.md" ! -name "README.md" | wc -l | tr -d ' ')
echo "Number of changesets: $CHANGESETS"
# Check if any changeset files are in the changed files
CHANGESET_IN_PR=false
while IFS= read -r file; do
if [[ "$file" =~ ^\.changeset/.*\.md$ && "$file" != ".changeset/README.md" ]]; then
echo "Found changeset file in PR: $file"
CHANGESET_IN_PR=true
break
fi
done <<< "$CHANGED_FILES"
if [ "$CHANGESETS" -eq 0 ]; then
echo "::error::No changeset file found. Please run 'npm run changeset' to create one."
exit 1
if [ "$CHANGESET_IN_PR" = false ]; then
# Double check local changeset files as backup
CHANGESETS=$(find .changeset -name "*.md" ! -name "README.md" | wc -l | tr -d ' ')
echo "Number of local changesets: $CHANGESETS"
if [ "$CHANGESETS" -eq 0 ]; then
echo "::error::No changeset file found in PR changes or local directory. Please run 'npm run changeset' to create one."
exit 1
fi
fi
- name: Find Comment
uses: peter-evans/find-comment@45803def666fc704971eff4c7d57d650f81ae24a # v3
- name: Comment on PR
if: failure()
id: find-comment
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: "github-actions[bot]"
body-includes: This PR requires a changeset
script: |
const message = `This PR requires a changeset since it includes user-facing changes. Please:
- name: Create Comment
uses: peter-evans/create-or-update-comment@23ff15e22924c50649c1d63cc73f02f16fc0a8e8 # v4
if: failure() && steps.find-comment.outputs.comment-id == ''
with:
issue-number: ${{ github.event.pull_request.number }}
body: |
This PR requires a changeset since it includes user-facing changes. Please:
1. Run `npm run changeset` locally
1. Run \`npm run changeset\` locally
2. Choose the appropriate version bump:
- `major` for breaking changes (1.0.0 → 2.0.0)
- `minor` for new features (1.0.0 → 1.1.0)
- `patch` for bug fixes (1.0.0 → 1.0.1)
- \`major\` for breaking changes (1.0.0 → 2.0.0)
- \`minor\` for new features (1.0.0 → 1.1.0)
- \`patch\` for bug fixes (1.0.0 → 1.0.1)
3. Write a clear description of your changes
4. Commit the generated changeset file
Note: Documentation-only changes do not require a changeset.
Note: Documentation-only changes do not require a changeset.`;
// Get existing comments
const comments = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number
});
// Check if we already commented
const botComment = comments.data.find(comment =>
comment.user.login === 'github-actions[bot]' &&
comment.body.includes('This PR requires a changeset')
);
if (!botComment) {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: message
});
}