name: Deploy Preview on: pull_request: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: build: if: ${{ github.event.pull_request.head.repo.full_name == 'primer/react' }} runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: 'npm' - name: Install dependencies run: npm ci - name: Build docs preview run: npm run build:docs:preview - uses: actions/upload-pages-artifact@v3 with: name: github-pages path: docs/public deploy-preview: if: ${{ github.event.pull_request.head.repo.full_name == 'primer/react' }} needs: build permissions: pages: write id-token: write environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} outputs: deployment_url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 with: preview: true deploy-storybook: name: Preview Storybook if: ${{ github.event.pull_request.head.repo.full_name == 'primer/react' }} needs: deploy-preview permissions: deployments: write runs-on: ubuntu-latest steps: - uses: chrnorm/deployment-action@v2.0.7 name: Create GitHub deployment for storybook id: storybook with: token: ${{ secrets.GITHUB_TOKEN }} environment: storybook-preview-${{ github.event.number }} environment_url: '${{ needs.deploy-preview.outputs.deployment_url }}/storybook' - name: Update storybook deployment status (success) if: success() uses: chrnorm/deployment-status@v2.0.1 with: token: ${{ secrets.GITHUB_TOKEN }} environment-url: '${{ needs.deploy-preview.outputs.deployment_url }}/storybook' state: 'success' deployment-id: ${{ steps.storybook.outputs.deployment_id }} - name: Update storybook deployment status (failure) if: failure() uses: chrnorm/deployment-status@v2.0.1 with: token: ${{ secrets.GITHUB_TOKEN }} state: 'failure' deployment-id: ${{ steps.storybook.outputs.deployment_id }}