Skip to content

Deploy Documentation #302

Deploy Documentation

Deploy Documentation #302

name: Deploy Documentation
on:
push:
branches:
- develop
paths:
- "documentation/**"
workflow_dispatch:
jobs:
deploy:
name: Deploy to GitHub Pages
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: false
- name: Cache node modules
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('documentation/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Cache documentation node modules
uses: actions/cache@v4
with:
path: documentation/node_modules
key: ${{ runner.os }}-docs-node-${{ hashFiles('documentation/package-lock.json') }}
restore-keys: |
${{ runner.os }}-docs-node-
- name: Cache Docusaurus build artifacts
uses: actions/cache@v4
with:
path: |
documentation/.docusaurus
documentation/node_modules/.cache
documentation/.cache
key: ${{ runner.os }}-docusaurus-${{ hashFiles('documentation/**/*.md', 'documentation/**/*.mdx', 'documentation/docusaurus.config.js', 'documentation/package-lock.json') }}
restore-keys: |
${{ runner.os }}-docusaurus-
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: 'npm'
cache-dependency-path: documentation/package-lock.json
- name: Install dependencies
run: |
npm ci --prefer-offline --no-audit
# Install Docusaurus Faster dependency if not already in package.json
if ! npm list @docusaurus/faster --depth=0 2>/dev/null; then
npm install @docusaurus/faster --save-dev --prefer-offline
fi
working-directory: ./documentation
- name: Build website
run: npm run build
working-directory: ./documentation
env:
POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY }}
# Optimize Node.js for performance
NODE_OPTIONS: "--max-old-space-size=6144 --max-semi-space-size=1024"
# Enable experimental faster builds
DOCUSAURUS_EXPERIMENTAL_FASTER: "true"
# Parallel processing
UV_THREADPOOL_SIZE: 128
- name: Add CNAME
run: echo "docs.typewritermc.com" > ./documentation/build/CNAME
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./documentation/build
user_name: github-actions[bot]
user_email: 41898282+github-actions[bot]@users.noreply.github.com