This file helps AI agents understand the repository structure and workflow.
Static website for solr.apache.org, built with Pelican (Python static site generator). Content is written in Markdown. The build runs inside Docker to ensure a reproducible environment.
./build.sh -l # build and serve with live reload at http://localhost:8000 ./build.sh # one-shot build into output/ ./build.sh -h # show all options
Docker must be installed. The script auto-builds the image if missing, and auto-rebuilds it if requirements.txt is newer than the cached image.
| Path | Purpose |
|---|---|
pelicanconf.py | Pelican configuration; defines SOLR_LATEST_RELEASE and other site-wide variables |
content/pages/ | All site pages as Markdown files |
content/pages/blogposts/ | Blog posts |
themes/solr/templates/ | Jinja2 HTML templates |
themes/solr/static/ | CSS, JS, images |
plugins/ | Local Pelican plugins (Python) |
requirements.in | Direct Python dependencies (human-editable) |
requirements.txt | Hash-verified lockfile generated from requirements.in — do not edit by hand |
Dockerfile | Base image pinned by digest; Dependabot tracks it |
.github/dependabot.yml | Dependabot config for pip, docker, and github-actions ecosystems |
Edit requirements.in, then regenerate the lockfile and rebuild the image:
./build.sh --lock -b
Or in two steps:
./build.sh --lock # regenerates requirements.txt inside Docker ./build.sh -b # rebuilds the Docker image
Edit pelicanconf.py and bump SOLR_LATEST_RELEASE, SOLR_LATEST_RELEASE_DATE, and SOLR_PREVIOUS_MAJOR_RELEASE. These variables propagate throughout the theme automatically.
base.html template.Template: my-template in its Markdown front matter.jinja2content plugin allows Jinja2 expressions directly inside Markdown pages.| Branch | Purpose |
|---|---|
main | Staging — auto-deployed to solr.staged.apache.org |
production | Live site — merge main → production to publish |
Never commit directly to production. Always go through main (and a PR).
.github/workflows/pr-build-pelican.ymlmain/production: full build + publish, defined in .github/workflows/build-pelican.yml