fix(build): resolve Vercel deployment failure, case mismatch, duplica… #11
This file contains hidden or 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: Claim Issue | |
| on: | |
| issue_comment: | |
| types: [created] | |
| permissions: | |
| issues: write | |
| contents: read | |
| concurrency: | |
| group: claim-issue-${{ github.event.issue.number }} | |
| cancel-in-progress: false | |
| jobs: | |
| claim: | |
| # issue_comment is also triggered for pull requests. | |
| # Only process comments on actual issues. | |
| if: > | |
| github.event.issue.pull_request == null && | |
| startsWith(github.event.comment.body, '/claim') | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Claim issue | |
| uses: actions/github-script@v7 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| script: | | |
| const issueNumber = context.issue.number; | |
| const commentBody = context.payload.comment.body.trim(); | |
| const commenter = context.payload.comment.user.login; | |
| // /claim must be the complete command, ignoring case. | |
| if (!/^\/claim$/i.test(commentBody)) { | |
| return; | |
| } | |
| // Get the latest issue state. | |
| const { data: issue } = await github.rest.issues.get({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issueNumber | |
| }); | |
| // Ignore if the issue is already assigned. | |
| if (issue.assignees.length > 0) { | |
| const currentAssignee = issue.assignees[0].login; | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issueNumber, | |
| body: | |
| `⚠️ This issue is already assigned to @${currentAssignee}. ` + | |
| `Please choose another available issue.` | |
| }); | |
| return; | |
| } | |
| // Assign the commenter. | |
| try { | |
| await github.rest.issues.addAssignees({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issueNumber, | |
| assignees: [commenter] | |
| }); | |
| // Add the assigned label. | |
| await github.rest.issues.addLabels({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issueNumber, | |
| labels: ['assigned'] | |
| }); | |
| // Confirmation. | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issueNumber, | |
| body: | |
| `✅ Issue claimed successfully! @${commenter} has been ` + | |
| `assigned to this issue. Happy contributing! 🚀` | |
| }); | |
| } catch (error) { | |
| core.error(`Failed to claim issue #${issueNumber}: ${error.message}`); | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issueNumber, | |
| body: | |
| `❌ I couldn't assign this issue to @${commenter}. ` + | |
| `Please try again later or contact a maintainer.` | |
| }); | |
| core.setFailed('Failed to assign issue'); | |
| } |