From a16498c76707080459e1e94f66782ccb8a64a3d0 Mon Sep 17 00:00:00 2001 From: Florian Haas Date: Thu, 5 Mar 2026 09:32:38 +0100 Subject: [PATCH] docs: Add DEVELOPMENT.md Add a brief developer guide. --- DEVELOPMENT.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 DEVELOPMENT.md diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md new file mode 100644 index 0000000..b0251a6 --- /dev/null +++ b/DEVELOPMENT.md @@ -0,0 +1,42 @@ +# Developer Guidelines + +## General Rules + +1. Launch Pads support OpenStack Heat, Ansible, and OpenTofu. +2. Launch Pads must behave substantially identically across all supported orchestration frameworks. +3. Every configuration option must be available, and be named identically, across all supported orchestration frameworks. +4. Every configuration option must be documented in the repository root README. + +### Exceptions + +* In a Launch Pad built with OpenStack Heat, the `pad_name` variable is replaced by the Heat stack name. + +## Supported versions + +* The OpenStack stack template supports the OpenStack Caracal, Epoxy, and Flamingo client libraries. +* The Ansible playbooks support Ansible Core 2.16, 2.19, and 2.20, and the OpenStack Caracal, Epoxy, and Flamingo client SDKs. +* The OpenTofu configuration supports OpenTofu 1.9, 1.10, and 1.11. + +## Style Guide + +* YAML files must conform to [yamllint](https://yamllint.readthedocs.io/). + See `.yamllint` for enabled rules. +* Ansible playbooks must conform to [Ansible Lint](https://docs.ansible.com/projects/lint/) in a default configuration. +* OpenTofu configurations must pass `tf validate` with any supported OpenTofu release. +* Markdown files must use [one sentence per line](https://sive.rs/1s), and conform to [PyMarkdownLnt](https://pymarkdown.readthedocs.io/). + See `.pymarkdown.json` for enabled rules. + +## CI Pipeline + +This repo has both a GitLab CI pipeline definition (`.gitlab-ci.yml`) and GitHub Actions Workflows (in `.github/workflows`). + +The tests are substantially identical, and use parallel-build matrix strategies to cover the supported platforms. + +## Git Hooks + +`pre-commit`, `post-commit`, and `pre-push` hooks are available in `.githooks`. +To enable, run this command: + +```shell +git config core.hooksPath .githooks +```