contributing¶
the repo is pfeifferj/specdoc, AGPL-3.0,
default branch master. start with local development: the whole
stack runs on one machine with no cluster and no github app.
where things live¶
| what | where |
|---|---|
| editor build inputs | editor/UPSTREAM, editor/critic.bundle |
| editor rebrand overlay | editor/overlay.sh, editor/branding/ |
| editor source | the critic branch inside the bundle, not this tree |
| spec board | spec-board/server.js, tests in spec-board/test.js |
| docs (this site) | docs/, mkdocs.yml |
| cluster manifests | specdoc-infra |
what CI checks on a pull request¶
node spec-board/test.js- the editor build inputs agree: the fork tree is reconstructed from
editor/critic.bundleand the base commit is checked against the tag ineditor/UPSTREAM editor/overlay.shstill finds every string it rewrites, run against a real checkout of the fork. upstream moving a template is a build failure here rather than a silently unbranded image later- shellcheck on the shell scripts
mkdocs build --strictwhen docs change
conventions¶
- conventional commits (
feat:,fix:,docs:,refactor:,test:,chore:), subject in the imperative, body explaining why - lowercase headings and prose in these docs
- comments explain why, never what
- changing anything that stores, sends or publishes user data means updating
the board's
/privacypage in the same commit
how a change reaches production¶
merging to master is the deploy. a cronjob in the cluster notices the new
commit within five minutes, builds both images, and an image trigger rolls each
deployment to the new digest. see releases for the one exception,
an upstream bump, and operations for what to check.