# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. name: "Sync v1 docsite to Cloudflare" permissions: contents: read concurrency: group: cloudflare-sync cancel-in-progress: true # zizmor flags workflow_run, but this is safe because it only deploys internal branches and is strictly gated to the base repository. on: # zizmor: ignore[dangerous-triggers] workflow_dispatch: workflow_run: workflows: ["CF: Deploy Dev Docs", "CF: Deploy Versioned Docs", "CF: Deploy Previous Version Docs"] types: [completed] jobs: deploy: runs-on: ubuntu-latest # Hardened workflow_run: strictly verifies the triggering run originated from the base repository to prevent execution from forks. if: > github.event_name == 'workflow_dispatch' || (github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.head_repository.full_name == github.repository) steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 with: ref: 'cloudflare-pages' persist-credentials: false - name: Cleanup run: | rm -rf .git - name: Cloudflare Deploy uses: cloudflare/wrangler-action@ebbaa1584979971c8614a24965b4405ff95890e0 # v4 with: apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} command: pages deploy . --project-name=toolbox-docs --branch=main