name: "CI: Tests Storybook (Deploy for Forks)" description: "Deploys Storybook previews from forked PRs (forks can't access deployment secrets)" on: workflow_run: workflows: ["CI: Tests Storybook"] types: [requested, completed] env: DATE_FORMAT: '+%m/%d/%Y, %I:%M:%S %p' jobs: deploy-and-comment-forked-pr: runs-on: ubuntu-latest if: | github.repository == 'Comfy-Org/ComfyUI_frontend' && github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.head_repository != null && github.event.workflow_run.repository != null && github.event.workflow_run.head_repository.full_name != github.event.workflow_run.repository.full_name permissions: pull-requests: write actions: read steps: - name: Log workflow trigger info run: | echo "Repository: ${{ github.repository }}" echo "Event: ${{ github.event.workflow_run.event }}" echo "Head repo: ${{ github.event.workflow_run.head_repository.full_name || 'null' }}" echo "Base repo: ${{ github.event.workflow_run.repository.full_name || 'null' }}" echo "Is forked: ${{ github.event.workflow_run.head_repository.full_name != github.event.workflow_run.repository.full_name }}" - name: Checkout repository uses: actions/checkout@v5 - name: Get PR Number id: pr uses: actions/github-script@v7 with: script: | const { data: prs } = await github.rest.pulls.list({ owner: context.repo.owner, repo: context.repo.repo, state: 'open', }); const pr = prs.find(p => p.head.sha === context.payload.workflow_run.head_sha); if (!pr) { console.log('No PR found for SHA:', context.payload.workflow_run.head_sha); return null; } console.log(`Found PR #${pr.number} from fork: ${context.payload.workflow_run.head_repository.full_name}`); return pr.number; - name: Handle Storybook Start if: steps.pr.outputs.result != 'null' && github.event.action == 'requested' env: GITHUB_TOKEN: ${{ github.token }} run: | chmod +x scripts/cicd/pr-storybook-deploy-and-comment.sh ./scripts/cicd/pr-storybook-deploy-and-comment.sh \ "${{ steps.pr.outputs.result }}" \ "${{ github.event.workflow_run.head_branch }}" \ "starting" \ "$(date -u '${{ env.DATE_FORMAT }}')" - name: Download and Deploy Storybook if: steps.pr.outputs.result != 'null' && github.event.action == 'completed' && github.event.workflow_run.conclusion == 'success' uses: actions/download-artifact@v4 with: github-token: ${{ secrets.GITHUB_TOKEN }} run-id: ${{ github.event.workflow_run.id }} name: storybook-static path: storybook-static - name: Handle Storybook Completion if: steps.pr.outputs.result != 'null' && github.event.action == 'completed' env: CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} GITHUB_TOKEN: ${{ github.token }} WORKFLOW_CONCLUSION: ${{ github.event.workflow_run.conclusion }} WORKFLOW_URL: ${{ github.event.workflow_run.html_url }} run: | chmod +x scripts/cicd/pr-storybook-deploy-and-comment.sh ./scripts/cicd/pr-storybook-deploy-and-comment.sh \ "${{ steps.pr.outputs.result }}" \ "${{ github.event.workflow_run.head_branch }}" \ "completed"