Deployment
Release Workflow
The repository release workflow combines two outputs in a single run:
- Build the Docusaurus site and deploy it to GitHub Pages.
- Build and publish the
docs-templatecontainer image to GitHub Container Registry.
The workflow lives in .github/workflows/release.yml and runs on pull requests to main, push to main, and workflow_dispatch.
GitHub Pages
- Update
static/CNAMEwith your domain if needed. - Configure GitHub Pages in repository settings.
- Open a pull request to
main, push tomain, or run the Release workflow manually.
The build job:
- runs inside
ghcr.io/the-running-dev/build-agent:latest - installs dependencies
- runs
pnpm run quality-ci - runs
pnpm run build:prod - on pull requests, validates the container image builds (
scripts/docs-build-image.ps1, no push) - on push/manual runs, versions, builds, and pushes the container image (see Container Registry below)
- uploads the Pages artifact from
artifacts/
The deploy job then publishes the built site to GitHub Pages on push or manual runs.
Container Registry
The same release workflow publishes the template container image to GitHub Container Registry.
- Image:
ghcr.io/the-running-dev/docs-template - On push or manual runs, the build job logs in to GHCR and runs
scripts/docs-build-image.ps1to build the image from the rootDockerfileand push it as:latestplus an immutable GitVersion tag computed fromGitVersion.yml. - On pull requests the image is built for validation only (no login, no push).
- The workflow grants
packages: writeso the build job can push the image.
Base Image Project Copy Behavior
The base image build defined in Dockerfile uses /template as the application directory.
- Project files are copied into
/templateduring the image build. - Template docs are explicitly removed (
/template/docs) so downstream projects do not inherit sample docs. - This keeps the base image reusable for derived projects that provide their own docs content.
For a derived image, see Dockerfile.example:
- It starts from
ghcr.io/the-running-dev/docs-template:latest. - It copies local files over
/templatewithCOPY . .. - It runs
pnpm install --frozen-lockfileafter copy so local dependency changes are applied.
Other Platforms
Build the site with pnpm run build:prod and deploy the artifacts/ directory to your hosting provider.