feat(docs): deploy main branch preview alongside PR previews #520
Workflow file for this run
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: Docs Preview | |
| on: | |
| push: | |
| branches: [main] | |
| paths: | |
| - 'docs/**' | |
| - 'src/**' | |
| - 'script/generate-command-docs.ts' | |
| - 'script/generate-skill.ts' | |
| - 'install' | |
| - '.github/workflows/docs-preview.yml' | |
| pull_request: | |
| paths: | |
| - 'docs/**' | |
| - 'src/**' | |
| - 'script/generate-command-docs.ts' | |
| - 'script/generate-skill.ts' | |
| - 'install' | |
| - '.github/workflows/docs-preview.yml' | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| concurrency: | |
| group: docs-preview-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| preview: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: oven-sh/setup-bun@v2 | |
| - uses: actions/cache@v5 | |
| id: cache | |
| with: | |
| path: node_modules | |
| key: node-modules-${{ hashFiles('bun.lock', 'patches/**') }} | |
| - if: steps.cache.outputs.cache-hit != 'true' | |
| run: bun install --frozen-lockfile | |
| - name: Get CLI version | |
| id: version | |
| run: echo "version=$(node -p 'require("./package.json").version')" >> "$GITHUB_OUTPUT" | |
| - name: Generate docs content | |
| run: bun run generate:schema && bun run generate:docs | |
| - name: Build Docs for Preview | |
| working-directory: docs | |
| env: | |
| DOCS_BASE_PATH: ${{ github.event_name == 'push' | |
| && '/_preview/pr-main' | |
| || format('/_preview/pr-{0}', github.event.pull_request.number) }} | |
| PUBLIC_SENTRY_ENVIRONMENT: staging | |
| SENTRY_RELEASE: ${{ steps.version.outputs.version }} | |
| PUBLIC_SENTRY_RELEASE: ${{ steps.version.outputs.version }} | |
| run: | | |
| bun install --frozen-lockfile | |
| bun run build | |
| - name: Inject debug IDs and upload sourcemaps | |
| if: env.SENTRY_AUTH_TOKEN != '' | |
| env: | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| SENTRY_ORG: sentry | |
| SENTRY_PROJECT: cli-website | |
| run: | | |
| bun run --bun src/bin.ts sourcemap inject docs/dist/ | |
| bun run --bun src/bin.ts sourcemap upload docs/dist/ \ | |
| --release "${{ steps.version.outputs.version }}" \ | |
| --url-prefix "~/" | |
| # Remove .map files — uploaded to Sentry but shouldn't be deployed. | |
| - name: Remove sourcemaps from output | |
| run: find docs/dist -name '*.map' -delete | |
| - name: Ensure .nojekyll at gh-pages root | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| # Try to fetch the gh-pages branch | |
| if git fetch origin gh-pages:gh-pages 2>/dev/null; then | |
| # Branch exists remotely, check if .nojekyll is present | |
| if git show gh-pages:.nojekyll &>/dev/null; then | |
| echo ".nojekyll already exists at gh-pages root" | |
| else | |
| echo "Adding .nojekyll to existing gh-pages branch" | |
| git checkout gh-pages | |
| touch .nojekyll | |
| git add .nojekyll | |
| git commit -m "Add .nojekyll to disable Jekyll processing" | |
| git push origin gh-pages | |
| git checkout - | |
| fi | |
| else | |
| # Branch doesn't exist, create it as an orphan branch | |
| echo "Creating gh-pages branch with .nojekyll" | |
| git checkout --orphan gh-pages | |
| git rm -rf . | |
| touch .nojekyll | |
| git add .nojekyll | |
| git commit -m "Initialize gh-pages with .nojekyll" | |
| git push origin gh-pages | |
| git checkout - | |
| fi | |
| - name: Deploy Preview | |
| uses: rossjrw/pr-preview-action@v1 | |
| with: | |
| source-dir: docs/dist/ | |
| preview-branch: gh-pages | |
| umbrella-dir: _preview | |
| pages-base-url: cli.sentry.dev | |
| action: ${{ github.event_name == 'push' && 'deploy' || 'auto' }} | |
| pr-number: ${{ github.event_name == 'push' && 'main' || github.event.pull_request.number }} | |
| comment: ${{ github.event_name != 'push' }} |