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
55 changes: 55 additions & 0 deletions .github/workflows/site.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Deploy member site

# Build and deploy the Plainweave member website (plainweave.foundryside.dev)
# to GitHub Pages. The site is an Astro app under site/; `npm ci` runs the
# preinstall hook (scripts/fetch-site-kit.mjs) which sparse-clones the shared
# @weft/site-kit from the public foundryside-dev/weft repo, and `npm run build`
# runs prebuild (sync-assets) then `astro build` into site/dist. The custom
# domain is carried in the artifact (site/public/CNAME -> site/dist/CNAME), so
# deploy-pages sets it on first deploy — no extra API call needed. DNS for
# plainweave.foundryside.dev is owner/infra-side.

on:
push:
branches: [main]
paths:
- 'site/**'
- '.github/workflows/site.yml'
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

# Allow one in-flight Pages deploy at a time; let a running deploy finish.
concurrency:
group: pages
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install (runs preinstall fetch-site-kit) and build
working-directory: site
run: |
npm ci
npm run build
- uses: actions/upload-pages-artifact@v3
with:
path: site/dist

deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
14 changes: 14 additions & 0 deletions site/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# build output
dist/
# generated Astro types
.astro/
# deps
node_modules/
# sparse-fetched @weft/site-kit (regenerated by fetch-site-kit — do not commit)
vendor/site-kit/
vendor/
# synced from @weft/site-kit at build time (do not commit — regenerated by sync-assets)
public/_site-kit/
# misc
.DS_Store
*.log
14 changes: 14 additions & 0 deletions site/astro.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// @ts-check
import { defineConfig } from 'astro/config';
import react from '@astrojs/react';

// plainweave.foundryside.dev — the Plainweave member spoke site (IA §1.3, §1.4):
// site: https://plainweave.foundryside.dev
// base: '/' (every member site is its own domain root — no subpath)
// Cross-subdomain links to siblings are ABSOLUTE https://{member}.foundryside.dev
// URLs (generated by the shared @weft/site-kit data), so no base-path gymnastics.
export default defineConfig({
site: 'https://plainweave.foundryside.dev',
base: '/',
integrations: [react()],
});
Loading
Loading