13. Publish OpsDev Python modules on GitHub¶
Date: 2025-11-12
Status¶
Accepted
Context¶
- The OpsDev.nz collective (our platform engineering arm under StartMeUp.nz) maintains reusable Python modules such as
opsdevnz/octodns_metanameandopsdevnz/op_opsdevnz. - Today these packages live inside the public
opsdev.nzmonorepo, which makes it hard to version, reuse, or consume them from private repos likeprivate/jjobs/INFRA. - We need an installation story that does not assume the module lives in a parent monorepo or specific submodule layout; private customers should
pip installthem like any other dependency. - The startmeup-nz GitHub organisation already exists, has CI/publishing automation, and is aligned with our goal of building reputation/visibility for these modules. GitLab would require duplicative setup.
- OpsDev.nz will continue operating under the StartMeUp.nz umbrella, but SMUNZ is focusing on fiscal sponsorship and wants the platform tooling to be open, documented, and easy to consume.
Decision¶
We will split the OpsDev Python modules into standalone repositories under the github.com/startmeup-nz organisation (e.g., startmeup-nz/octodns-metaname, startmeup-nz/op-opsdevnz), publish them as installable Python packages, and update both public and private projects to consume them via normal dependency management (requirements files or PyPI/Git URL pins). The monorepo copies become consumers, not homes of record.
Consequences¶
- Pros
- Clear versioning and release notes, making it easy to pin specific provider/helper versions across repos.
- Private repos (e.g.,
private/jjobs/INFRA) can be self-contained without knowledge of the parent monorepo layout. - GitHub visibility/readiness enables outside contributions, Issues/PRs, and automated publishing (Actions).
- Simplifies future upstream contributions (e.g., pushing the Metaname provider to OctoDNS) because the code lives in focused repos.
- Cons / Mitigations
- Extra overhead to manage multiple repos and release pipelines; mitigate by templating CI and documenting the release checklist.
- Requires secret handling for publishing (PyPI tokens, etc.). Store these in the
startmeup-nzorg secrets vault and mirror in OpsDev runbooks. - Projects depending on the in-tree modules must update import paths and requirements. Schedule a migration window and document the steps in README + runbooks.