44 pull_request :
55
66jobs :
7- # For PRs from the main repo - direct call to the shared workflow
8- trigger-main-repo-preview :
9- name : Trigger Preview (Main Repo)
10- uses : ./.github/workflows/cloudflare-preview.yml
11- if : github.event.pull_request.head.repo.fork == false
12- with :
13- pr_number : ${{ github.event.pull_request.number }}
14- pr_head_sha : ${{ github.event.pull_request.head.sha }}
15- pr_checkout_repository : ${{ github.repository }}
16- secrets :
17- cloudflare_api_token : ${{ secrets.CLOUDFLARE_API_TOKEN }}
18- cloudflare_account_id : ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
19- matzbot_github_token : ${{ secrets.MATZBOT_GITHUB_TOKEN }}
20-
21- # For fork PRs - this job requires approval
22- wait-for-approval :
23- name : Wait for Approval (Fork PR)
7+ # Single job that handles both main repo and fork PRs
8+ preview-trigger :
9+ name : Trigger Preview Deployment
2410 runs-on : ubuntu-latest
25- if : github.event.pull_request.head.repo.fork == true
26- environment : fork-preview-protection
27- # This job only serves as an approval gate - it doesn't do anything else
11+ # For fork PRs, require approval first
12+ environment : ${{ github.event.pull_request.head.repo.fork == true && 'fork-preview-protection' || '' }}
2813 steps :
29- - run : echo "Approval granted. Proceeding with preview deployment for commit ${{ github.event.pull_request.head.sha }}."
30-
31- # Once approval is granted, call the shared workflow
32- trigger-fork-preview :
33- name : Trigger Preview (Fork - After Approval)
34- needs : wait-for-approval
35- uses : ./.github/workflows/cloudflare-preview.yml
36- if : github.event.pull_request.head.repo.fork == true
37- with :
38- pr_number : ${{ github.event.pull_request.number }}
39- pr_head_sha : ${{ github.event.pull_request.head.sha }}
40- pr_checkout_repository : ${{ github.event.pull_request.head.repo.full_name }}
41- secrets :
42- cloudflare_api_token : ${{ secrets.CLOUDFLARE_API_TOKEN }}
43- cloudflare_account_id : ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
44- matzbot_github_token : ${{ secrets.MATZBOT_GITHUB_TOKEN }}
14+ - name : Prepare deployment info
15+ id : prep
16+ run : |
17+ echo "is_fork=${{ github.event.pull_request.head.repo.fork }}" >> $GITHUB_OUTPUT
18+ echo "pr_number=${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT
19+ echo "pr_head_sha=${{ github.event.pull_request.head.sha }}" >> $GITHUB_OUTPUT
20+ if [[ "${{ github.event.pull_request.head.repo.fork }}" == "true" ]]; then
21+ echo "pr_checkout_repository=${{ github.event.pull_request.head.repo.full_name }}" >> $GITHUB_OUTPUT
22+ else
23+ echo "pr_checkout_repository=${{ github.repository }}" >> $GITHUB_OUTPUT
24+ fi
25+
26+ - name : Trigger preview deployment
27+ uses : actions/github-script@v7
28+ with :
29+ github-token : ${{ secrets.GITHUB_TOKEN }}
30+ script : |
31+ const is_fork = '${{ steps.prep.outputs.is_fork }}' === 'true';
32+ console.log(`Triggering preview deployment for ${is_fork ? 'fork' : 'main repo'} PR #${{ steps.prep.outputs.pr_number }}`);
33+
34+ await github.rest.repos.createDispatchEvent({
35+ owner: context.repo.owner,
36+ repo: context.repo.repo,
37+ event_type: 'pr-preview-deploy',
38+ client_payload: {
39+ pr_number: '${{ steps.prep.outputs.pr_number }}',
40+ pr_head_sha: '${{ steps.prep.outputs.pr_head_sha }}',
41+ pr_checkout_repository: '${{ steps.prep.outputs.pr_checkout_repository }}',
42+ is_fork: '${{ steps.prep.outputs.is_fork }}'
43+ }
44+ });
0 commit comments