| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- # Publish the documentation website to GitHub Pages. This workflow is manual-only
- # (workflow_dispatch) and intentionally does not listen to pull_request or push:
- # the site presents a released snapshot, so publication is an explicit act from a
- # dsh-v* tag and must never appear as a PR check. `release:verify` rejects every
- # other ref, and the github-pages environment repeats that restriction as a
- # deployment tag policy with required reviewers.
- #
- # The build signal does not depend on this workflow. Every pull request builds
- # the production site through `check:ci:static`, and ci-master.yml builds it
- # again on master.
- name: Deploy documentation
- on:
- workflow_dispatch:
- concurrency:
- group: github-pages
- cancel-in-progress: false
- permissions:
- contents: read
- env:
- PRIMARY_NODE_VERSION: '24'
- # Projected source links target the public repository, whose history can
- # differ from this workflow's source repository. This stays on master rather
- # than following the dispatched tag: that repository advances only to each
- # release commit, so its master never carries unreleased work, and it retains
- # only the most recent tags — following the tag would leave every projected
- # source link on an older deploy unresolvable.
- DOCS_REPOSITORY_REF: master
- # CI runs must never report to the production telemetry endpoint baked
- # into apps/cli/cordis.yml (AppCLIEntry disables the row when set).
- DSH_TELEMETRY_DISABLED: '1'
- jobs:
- build:
- runs-on: ubuntu-latest
- permissions:
- contents: read
- pages: read
- steps:
- # Complete history: the release scripts read tags.
- - uses: actions/checkout@v6
- with:
- fetch-depth: 0
- persist-credentials: false
- - uses: pnpm/action-setup@v4
- - uses: actions/setup-node@v6
- with:
- node-version: ${{ env.PRIMARY_NODE_VERSION }}
- cache: pnpm
- - name: Install (immutable)
- run: pnpm install --frozen-lockfile
- # One definition of "released" for the site and the npm sequence: this
- # rejects every ref that is not a dsh-v* tag naming the version this tree
- # carries.
- - name: Verify release version
- env:
- RELEASE_PUBLISH: 'true'
- run: pnpm run release:verify --family dsh
- - name: Configure Pages
- id: pages
- uses: actions/configure-pages@v6
- - name: Verify and build documentation
- env:
- DOCS_BASE: ${{ steps.pages.outputs.base_path }}/
- run: pnpm run doc-sync
- - name: Upload Pages artifact
- uses: actions/upload-pages-artifact@v5
- with:
- path: website/.dist
- deploy:
- needs: build
- runs-on: ubuntu-latest
- permissions:
- pages: write
- id-token: write
- environment:
- name: github-pages
- url: ${{ steps.deployment.outputs.page_url }}
- steps:
- - name: Deploy to GitHub Pages
- id: deployment
- uses: actions/deploy-pages@v5
|