fix(hooks): canonicalize known flattened collaboration tool names #1156
Workflow file for this run
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: Dev Merge Issue Close | |
| on: | |
| pull_request_target: | |
| types: [closed] | |
| permissions: | |
| issues: write | |
| pull-requests: read | |
| jobs: | |
| close-linked-issues: | |
| name: Close explicitly linked issues after dev merge | |
| if: github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'dev' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| ref: ${{ github.event.pull_request.base.ref }} | |
| - uses: actions/github-script@v9 | |
| with: | |
| script: | | |
| const { | |
| buildMaintainerCloseComment, | |
| collectLinkedLocalIssueNumbers, | |
| postMergedPrFollowUpComment, | |
| } = require('./.github/scripts/dev-merge-issue-close.cjs'); | |
| const pullRequest = context.payload.pull_request; | |
| const issueNumbers = collectLinkedLocalIssueNumbers({ | |
| title: pullRequest.title, | |
| body: pullRequest.body, | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| }); | |
| if (issueNumbers.length === 0) { | |
| core.notice('No explicitly linked local issues found in merged PR title/body.'); | |
| return; | |
| } | |
| const closeComment = buildMaintainerCloseComment({ prNumber: pullRequest.number }); | |
| const closedIssueNumbers = []; | |
| for (const issueNumber of issueNumbers) { | |
| try { | |
| const { data: issue } = await github.rest.issues.get({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issueNumber, | |
| }); | |
| if (issue.pull_request) { | |
| core.info(`Skipping #${issueNumber} because it is a pull request, not an issue.`); | |
| continue; | |
| } | |
| if (issue.state !== 'open') { | |
| core.info(`Skipping #${issueNumber} because it is already ${issue.state}.`); | |
| continue; | |
| } | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issueNumber, | |
| body: closeComment, | |
| }); | |
| await github.rest.issues.update({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issueNumber, | |
| state: 'closed', | |
| }); | |
| closedIssueNumbers.push(issueNumber); | |
| } catch (error) { | |
| core.warning(`Failed to close issue #${issueNumber}: ${error.message}`); | |
| } | |
| } | |
| if (closedIssueNumbers.length === 0) { | |
| core.notice('No open issues required closing.'); | |
| return; | |
| } | |
| await postMergedPrFollowUpComment({ | |
| github, | |
| core, | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| prNumber: pullRequest.number, | |
| issueNumbers: closedIssueNumbers, | |
| }); | |
| core.notice(`Closed linked issues after merge to dev: ${closedIssueNumbers.map((issueNumber) => `#${issueNumber}`).join(', ')}`); |