comphead commented on code in PR #26683:
URL: https://github.com/apache/datafusion/pull/26683#discussion_r4457917857
##########
.github/workflows/labeler.yml:
##########
@@ -17,36 +17,57 @@
name: Labeler
+# `pull_request_target` is disabled by ASF infra policy. This workflow runs
from
+# the default branch when `pull_request_signal.yml` starts, so it never runs
the
+# code of a pull request. See that file for details.
concurrency:
- group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{
github.workflow }}
+ group: ${{ github.repository }}-${{
github.event.workflow_run.head_repository.full_name }}-${{
github.event.workflow_run.head_branch }}-${{ github.workflow }}
cancel-in-progress: true
on:
- pull_request_target:
- types:
- - opened
- - edited
- - synchronize
+ workflow_run:
+ workflows: ["Pull request signal"]
+ types: [requested]
+
+permissions: {}
jobs:
process:
name: Process
runs-on: ubuntu-slim
- # only run for users whose permissions allow them to update PRs
- # otherwise labeler is failing:
+ if: github.event.workflow_run.event == 'pull_request'
+ # The token of a `workflow_run` workflow can update PRs from forks.
+ # Previously `pull_request_target` was used for the same reason, see
# https://github.com/apache/datafusion/issues/3743
permissions:
contents: read
pull-requests: write
steps:
+ # `workflow_run.pull_requests` is empty for pull requests from forks, so
+ # find the pull request by its head branch and commit. An outdated commit
+ # matches nothing, since a newer run labels the new head.
+ - name: Find the pull request
+ id: pr
+ uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3
# v9.0.0
+ with:
+ script: |
+ const run = context.payload.workflow_run;
+ const { data } = await github.rest.pulls.list({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ state: 'open',
+ head: `${run.head_repository.owner.login}:${run.head_branch}`,
+ });
+ const pr = data.find((pr) => pr.head.sha === run.head_sha);
Review Comment:
Thanks, both points confirmed and fixed in the latest commit.
- `labeler.yml` now labels every open PR that matches the head commit and
passes all numbers to `pr-number`, one per line. I checked that the pinned
`actions/labeler` documents multiple numbers.
- `fork_ci_status.yml` lists only PRs with `base: main`.
- `test_fork_ci_status.cjs` has a case with a newer release-branch PR and an
older `main` PR. It fails without the `base` filter.
The shared concurrency group point holds too, so the surviving run now
handles every match.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]