Optimiere Workflow zum Kopieren von Labels, um verknüpfte Issues über… #2
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: Copy issue labels to PR | |
| on: | |
| pull_request: | |
| types: [opened, reopened, synchronize] | |
| permissions: | |
| contents: read | |
| issues: read | |
| pull-requests: write | |
| jobs: | |
| copy-issue-labels: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Copy labels from linked issue | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const prNumber = context.payload.pull_request.number; | |
| const timeline = await github.paginate( | |
| github.rest.issues.listEventsForTimeline, | |
| { | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: prNumber, | |
| per_page: 100 | |
| } | |
| ); | |
| const linkedIssue = timeline.find(e => | |
| e.event === 'connected' && | |
| e.source?.type === 'issue' && | |
| e.source?.issue?.number | |
| ); | |
| if (!linkedIssue) { | |
| core.info('No linked issue found via timeline.'); | |
| return; | |
| } | |
| const issueNumber = linkedIssue.source.issue.number; | |
| core.info(`Found linked issue #${issueNumber}`); | |
| const issue = await github.rest.issues.get({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issueNumber | |
| }); | |
| const labels = issue.data.labels.map(label => label.name); | |
| if (labels.length === 0) { | |
| core.info('Linked issue has no labels.'); | |
| return; | |
| } | |
| await github.rest.issues.addLabels({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: prNumber, | |
| labels | |
| }); | |
| core.info(`Copied labels to PR: ${labels.join(', ')}`); |