diff --git a/.github/workflows/pr-gh-workflow-approve.yaml b/.github/workflows/pr-gh-workflow-approve.yaml new file mode 100644 index 000000000000..e3176ff28470 --- /dev/null +++ b/.github/workflows/pr-gh-workflow-approve.yaml @@ -0,0 +1,38 @@ +name: PR approve GH Workflows + +on: + pull_request_target: + types: + - labeled + - synchronize + +jobs: + approve: + name: Approve ok-to-test + if: contains(github.event.pull_request.labels.*.name, 'ok-to-test') + runs-on: ubuntu-latest + permissions: + actions: write + steps: + - name: Update PR + uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 + continue-on-error: true + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const result = await github.rest.actions.listWorkflowRunsForRepo({ + owner: context.repo.owner, + repo: context.repo.repo, + event: "pull_request", + status: "action_required", + head_sha: context.payload.pull_request.head.sha, + per_page: 100 + }); + + for (var run of result.data.workflow_runs) { + await github.rest.actions.approveWorkflowRun({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: run.id + }); + } diff --git a/docs/book/src/reference/jobs.md b/docs/book/src/reference/jobs.md index a9a0957aadd9..5228b64a752a 100644 --- a/docs/book/src/reference/jobs.md +++ b/docs/book/src/reference/jobs.md @@ -46,6 +46,8 @@ GitHub Presubmit Workflows: * Checks markdown modified in PR for broken links. * PR dependabot (run on dependabot PRs) * Regenerates Go modules and code. +* PR approve GH Workflows + * Approves other GH workflows if the `ok-to-test` label is set. GitHub Weekly Workflows: * Weekly check all Markdown links