Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions .github/workflows/website.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: Website

on:
pull_request:
paths:
- "website/**"
- "docs/**"
- "package.json"
- "pnpm-lock.yaml"
- "pnpm-workspace.yaml"
- ".github/workflows/website.yaml"
push:
branches: [main]
paths:
- "website/**"
- "docs/**"
- "package.json"
- "pnpm-lock.yaml"
- "pnpm-workspace.yaml"
- ".github/workflows/website.yaml"
workflow_dispatch:

permissions:
contents: read

concurrency:
# One deploy at a time on main, never cancelled mid-publish; PR builds supersede each other.
group: website-${{ github.event_name == 'pull_request' && github.ref || 'pages' }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Check out source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
# Full history so Starlight's "last updated" dates come from git.
fetch-depth: 0
- name: Set up pnpm via corepack
# Same setup as lint.yaml: pnpm has to be on PATH before setup-node's `cache: pnpm` runs.
# withastro/action is not used because it installs pnpm its own way, bypassing the
# corepack-pinned pnpm 11 from package.json's packageManager field.
run: |
mkdir -p "$RUNNER_TEMP/corepack"
corepack enable --install-directory "$RUNNER_TEMP/corepack" pnpm
echo "$RUNNER_TEMP/corepack" >> "$GITHUB_PATH"
corepack prepare --activate
- name: Set up Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile --ignore-scripts
- name: Type-check website
run: pnpm --filter @appduct/website typecheck
- name: Build website
# Also validates every internal docs link (starlight-links-validator) and fails on a broken one.
run: pnpm --filter @appduct/website build
- name: Upload Pages artifact
if: github.event_name != 'pull_request'
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
with:
path: website/dist

deploy:
if: github.event_name != 'pull_request'
needs: build
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
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@368f82528645a54fb793d4d04e342629a3f51346 # v5.0.1
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@
},
"workspaces": [
"packages/*",
"playground"
"playground",
"website"
],
"devDependencies": {
"turbo": "^2.8.20",
Expand Down
Loading
Loading