How Publishing Works
This page explains what happens automatically when a change is merged into the master branch of the repository.
The publishing pipeline
Every merge to master triggers the following sequence automatically — no one needs to run any commands:
GitHub receives the merge. The push to
mastertriggers a GitHub Actions workflow defined in.github/workflows/publish.yml.A virtual machine starts. GitHub spins up a fresh Ubuntu environment in the cloud. This takes about 30 seconds.
Quarto is installed on the VM. The workflow installs Quarto automatically. This happens every run — the VM starts fresh each time.
quarto renderruns. Quarto reads_quarto.yml, processes all.qmdfiles listed underbook.chapters, and generates HTML output.The output is published to the
gh-pagesbranch. The rendered site is pushed to a specialgh-pagesbranch in this repository. Only the built output lives there — not the source files.GitHub Pages serves the updated site. GitHub detects the push to
gh-pagesand updates the live site, usually within 60 seconds.
The full pipeline takes about 2–3 minutes from merge to live.
Checking if a build succeeded
- Go to the repository on GitHub.
- Click the Actions tab.
- Find the most recent workflow run (“Quarto Publish”).
- A green checkmark means the site updated successfully.
- A red X means something failed — click the run to see the error log.
What to do if a build fails
- Click the failed run in the Actions tab to read the error.
- Common causes: a
.qmdfile listed in_quarto.ymldoesn’t exist yet, or there’s a YAML syntax error in frontmatter. - Fix the issue in a new commit — the workflow re-runs automatically on push.
- If you can’t diagnose the error, email governance@esipfed.org.
Previewing changes locally (optional)
If you have Quarto installed on your machine, you can preview changes before opening a pull request:
# Install Quarto: https://quarto.org/docs/get-started/
quarto previewThis opens a live-reloading browser preview at http://localhost:4567. Changes you save to any .qmd file appear in the browser immediately.