CI: Tests Storybook (Deploy for Forks) #1613
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: "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" |