mirror of
https://github.com/invoke-ai/InvokeAI.git
synced 2026-04-23 03:00:31 -04:00
142 lines
3.7 KiB
YAML
142 lines
3.7 KiB
YAML
name: 'docs'
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- 'main'
|
|
pull_request:
|
|
types:
|
|
- 'ready_for_review'
|
|
- 'opened'
|
|
- 'synchronize'
|
|
workflow_dispatch:
|
|
inputs:
|
|
deploy_target:
|
|
description: 'Deploy target (custom = invoke.ai, ghpages = invoke-ai.github.io/InvokeAI)'
|
|
type: choice
|
|
options:
|
|
- custom
|
|
- ghpages
|
|
default: custom
|
|
|
|
permissions:
|
|
contents: read
|
|
pull-requests: read
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
changes:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
docs: ${{ steps.manual.outputs.docs || steps.filter.outputs.docs }}
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: mark manual run
|
|
if: github.event_name == 'workflow_dispatch'
|
|
id: manual
|
|
run: echo "docs=true" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: detect docs-related changes
|
|
if: github.event_name != 'workflow_dispatch'
|
|
id: filter
|
|
uses: dorny/paths-filter@v3
|
|
with:
|
|
filters: |
|
|
docs:
|
|
- '.github/workflows/deploy-docs.yml'
|
|
- 'docs/**'
|
|
- 'scripts/generate_docs_json.py'
|
|
- 'invokeai/app/**'
|
|
- 'invokeai/backend/**'
|
|
- 'pyproject.toml'
|
|
- 'uv.lock'
|
|
|
|
check-and-build:
|
|
needs: changes
|
|
if: |
|
|
github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'pull_request' &&
|
|
github.event.pull_request.draft == false &&
|
|
needs.changes.outputs.docs == 'true') ||
|
|
(github.event_name == 'push' && needs.changes.outputs.docs == 'true')
|
|
runs-on: ubuntu-22.04
|
|
timeout-minutes: 20
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v4
|
|
|
|
# Python (needed for generate-docs-data)
|
|
- name: setup uv
|
|
uses: astral-sh/setup-uv@v5
|
|
with:
|
|
version: '0.6.10'
|
|
enable-cache: true
|
|
python-version: '3.11'
|
|
|
|
- name: setup python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.11'
|
|
|
|
# generate_docs_json.py only needs the invokeai package importable
|
|
# (pydantic + invokeai.app/backend). Skip the [test] extra to keep CI fast.
|
|
- name: install python dependencies
|
|
run: uv pip install --editable .
|
|
|
|
# Node (needed for docs build)
|
|
- name: setup node
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '22.12.0'
|
|
|
|
- name: setup pnpm
|
|
uses: pnpm/action-setup@v4
|
|
with:
|
|
version: 10
|
|
run_install: false
|
|
|
|
- name: install docs dependencies
|
|
run: pnpm install --prefer-frozen-lockfile
|
|
working-directory: docs
|
|
|
|
# Checks
|
|
- name: verify generated docs data
|
|
run: pnpm run check-docs-data
|
|
working-directory: docs
|
|
|
|
- name: build docs
|
|
run: pnpm build
|
|
working-directory: docs
|
|
env:
|
|
DEPLOY_TARGET: ${{ github.event_name == 'workflow_dispatch' && inputs.deploy_target || github.ref == 'refs/heads/main' && 'ghpages' || 'custom' }}
|
|
|
|
# Upload artifact for deploy (main branch only)
|
|
- name: upload pages artifact
|
|
if: github.ref == 'refs/heads/main'
|
|
uses: actions/upload-pages-artifact@v3
|
|
with:
|
|
path: docs/dist
|
|
|
|
deploy:
|
|
if: github.ref == 'refs/heads/main'
|
|
needs: check-and-build
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
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@v4
|