name: Sync Portal Docs # Regenerates the portal Developer Docs manifest from the Stirling docs repo and # opens a PR when it changes. Runs weekly, on manual dispatch, or when the docs # repo fires a `docs-updated` repository_dispatch. on: schedule: - cron: "0 6 * * 1" workflow_dispatch: inputs: ref: description: "Docs repo ref (branch or tag) to sync from" required: false default: "main" repository_dispatch: types: [docs-updated] concurrency: group: ${{ github.workflow }} cancel-in-progress: true permissions: contents: read jobs: sync: name: Sync docs manifest runs-on: ubuntu-latest timeout-minutes: 10 permissions: contents: write pull-requests: write steps: - name: Harden Runner uses: step-security/harden-runner@ab7a9404c0f3da075243ca237b5fac12c98deaa5 # v2.19.3 with: egress-policy: audit - name: Checkout repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 persist-credentials: false - name: Setup GitHub App Bot id: setup-bot uses: ./.github/actions/setup-bot with: app-id: ${{ secrets.GH_APP_ID }} private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} - name: Set up Node.js uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: "22" cache: "npm" cache-dependency-path: frontend/package-lock.json - name: Install frontend dependencies working-directory: frontend env: NPM_CONFIG_IGNORE_SCRIPTS: "true" run: npm ci --ignore-scripts --audit=false --fund=false - name: Regenerate docs manifest working-directory: frontend env: DOCS_REF: ${{ github.event.inputs.ref || github.event.client_payload.ref || 'main' }} GITHUB_TOKEN: ${{ steps.setup-bot.outputs.token }} run: npm run docs:sync - name: Create Pull Request id: cpr uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1 with: token: ${{ steps.setup-bot.outputs.token }} commit-message: "Sync portal docs from docs repo" committer: ${{ steps.setup-bot.outputs.committer }} author: ${{ steps.setup-bot.outputs.committer }} signoff: true branch: sync-portal-docs base: main title: "Sync portal docs from docs repo" body: | Auto-generated by ${{ steps.setup-bot.outputs.app-slug }}[bot]. Regenerates `frontend/editor/src/portal/generated/docsManifest.json` from the Stirling docs repo via `npm run docs:sync`. labels: documentation,github-actions,frontend add-paths: frontend/editor/src/portal/generated/docsManifest.json delete-branch: true sign-commits: true