How do I deploy the site?

Table of Contents

For the build script that does the work (projects/ores.lisp/src/ores-build-site.el) and the output location, see CMake setup.

Question

How do I build the ORE Studio website locally?

Answer

Build the site with compass in --direct mode — it calls Emacs directly (no cmake, no vcpkg), so it works in a light environment:

./compass.sh build --direct site

This invokes Emacs in batch mode against projects/ores.lisp/src/ores-build-site.el, publishing every .org file in the repository (excluding .packages, vcpkg, build) to HTML. Output lands at build/output/site/.

In a full environment the equivalent deploy_site CMake target runs the same script; for the raw CMake build (presets, targets, cmake --build directly) see How do I build the system?.

Previewing locally

The site uses absolute /OreStudio/ paths (matching GitHub Pages). Use compass to preview with the correct URL structure:

./compass.sh site serve

Then open http://localhost:<ORES_SITE_PORT>/OreStudio/ in a browser (port from .env; default 51004 for local1).

To rebuild and serve in one step:

./compass.sh site serve --compile

Use --port N to override the port.

Prerequisites

  • Emacs on PATH. The script uses org-publish, org-id, and oc-bibtex from a default Emacs install with org-mode shipped.
  • --direct needs no preset or build directory. (The full-environment compass build site / deploy_site cmake path does: a .env with ORES_PRESET set, configured automatically on first build.)

When to re-run

Any time you add a new .org file, change a :ID: or #+title:, or edit anything that affects link resolution. The target wipes build/output/site/ first so links don't stale.

Script

projects/ores.lisp/src/ores-build-site.el is the Emacs script that compass build --direct site runs. The equivalent deploy_site CMake target definition lives in CMakeLists.txt near add_custom_target(deploy_site ...) and invokes the same script.

Tested by

The build-site.yml GitHub Action publishes the site on every push to main. The action's success is the integration test for this recipe.

See also

Emacs 29.1 (Org mode 9.6.6)