Skip to content

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_metaname and opsdevnz/op_opsdevnz.
  • Today these packages live inside the public opsdev.nz monorepo, which makes it hard to version, reuse, or consume them from private repos like private/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 install them 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-nz org 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.