mirror of https://github.com/tiangolo/fastapi.git
84 lines
3.1 KiB
YAML
84 lines
3.1 KiB
YAML
name: Deploy Docs
|
|
on:
|
|
workflow_run: # zizmor: ignore[dangerous-triggers]
|
|
workflows:
|
|
- Build Docs
|
|
types:
|
|
- completed
|
|
|
|
permissions: {}
|
|
|
|
jobs:
|
|
deploy-docs:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
deployments: write
|
|
issues: write
|
|
pull-requests: write
|
|
statuses: write
|
|
steps:
|
|
- name: Dump GitHub context
|
|
env:
|
|
GITHUB_CONTEXT: ${{ toJson(github) }}
|
|
run: echo "$GITHUB_CONTEXT"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
- name: Set up Python
|
|
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
with:
|
|
python-version-file: ".python-version"
|
|
- name: Setup uv
|
|
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0
|
|
with:
|
|
version: "0.11.4"
|
|
enable-cache: false
|
|
- name: Install GitHub Actions dependencies
|
|
run: uv sync --locked --no-dev --group github-actions
|
|
- name: Deploy Docs Status Pending
|
|
run: uv run ./scripts/deploy_docs_status.py
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
COMMIT_SHA: ${{ github.event.workflow_run.head_sha }}
|
|
RUN_ID: ${{ github.run_id }}
|
|
STATE: "pending"
|
|
- name: Clean site
|
|
run: |
|
|
rm -rf ./site
|
|
mkdir ./site
|
|
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
with:
|
|
path: ./site/
|
|
pattern: docs-site-*
|
|
merge-multiple: true
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
run-id: ${{ github.event.workflow_run.id }}
|
|
- name: Deploy to Cloudflare Pages
|
|
# hashFiles returns an empty string if there are no files
|
|
if: hashFiles('./site/*')
|
|
id: deploy
|
|
env:
|
|
PROJECT_NAME: fastapitiangolo
|
|
BRANCH: ${{ ( github.event.workflow_run.head_repository.full_name == github.repository && github.event.workflow_run.head_branch == 'master' && 'main' ) || ( github.event.workflow_run.head_sha ) }}
|
|
uses: cloudflare/wrangler-action@da0e0dfe58b7a431659754fdf3f186c529afbe65 # v3.14.1
|
|
with:
|
|
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} # zizmor: ignore[secrets-outside-env]
|
|
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} # zizmor: ignore[secrets-outside-env]
|
|
command: pages deploy ./site --project-name=${{ env.PROJECT_NAME }} --branch=${{ env.BRANCH }}
|
|
- name: Deploy Docs Status Error
|
|
if: failure()
|
|
run: uv run ./scripts/deploy_docs_status.py
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
COMMIT_SHA: ${{ github.event.workflow_run.head_sha }}
|
|
RUN_ID: ${{ github.run_id }}
|
|
STATE: "error"
|
|
- name: Comment Deploy
|
|
run: uv run ./scripts/deploy_docs_status.py
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
DEPLOY_URL: ${{ steps.deploy.outputs.deployment-url }}
|
|
COMMIT_SHA: ${{ github.event.workflow_run.head_sha }}
|
|
RUN_ID: ${{ github.run_id }}
|
|
STATE: "success"
|