featrue : OPIC 말하기연습 전체 세션에 대한 피드백 리포트 화면 구현 #60
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: Auto Close Issues | |
| on: | |
| pull_request: | |
| types: [ closed ] | |
| branches: | |
| - develop | |
| - main | |
| jobs: | |
| close-issues: | |
| if: github.event.pull_request.merged == true | |
| runs-on: ubuntu-latest | |
| permissions: | |
| issues: write | |
| pull-requests: read | |
| steps: | |
| - name: Close linked issues | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const prBody = context.payload.pull_request.body || ''; | |
| const prNumber = context.payload.pull_request.number; | |
| // Find issue numbers from PR body (Closes #N, Fixes #N, Resolves #N) | |
| const issueRegex = /(?:close[sd]?|fix(?:e[sd])?|resolve[sd]?)\s+#(\d+)/gi; | |
| const matches = [...prBody.matchAll(issueRegex)]; | |
| if (matches.length === 0) { | |
| console.log('No issues found to close'); | |
| return; | |
| } | |
| for (const match of matches) { | |
| const issueNumber = parseInt(match[1]); | |
| console.log(`Closing issue #${issueNumber}`); | |
| try { | |
| await github.rest.issues.update({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issueNumber, | |
| state: 'closed' | |
| }); | |
| // Add a comment | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issueNumber, | |
| body: `Closed by PR #${prNumber}` | |
| }); | |
| console.log(`✓ Issue #${issueNumber} closed`); | |
| } catch (error) { | |
| console.log(`✗ Failed to close issue #${issueNumber}: ${error.message}`); | |
| } | |
| } |