Skip to content

DevelopmentPrinciples

Martin Pitt edited this page Jul 15, 2020 · 10 revisions

Development

  • keep master working on as many (current) OSes as possible; use run-time feature/API detection
  • test for every change; some OS conditionals in tests
  • code is easy (or possible+documented) to run straight out of git tree; no permanent system modifications
  • test VMs double as devel environment for testing intrusive changes; faster iteration with scp instead of image-prepare
  • tests are easy to run and debug locally

Upstream CI

  • test on every supported OS
  • offline build and tests
  • provide our own versions of third-party services: FreeIPA, Samba AD, candlepin, OpenShift, ovirt, selenium containers
  • provide mechanics for creating rpms, debs, and entire repositories from scratch locally
  • separate OS image refreshes
  • test robustness: touched tests succeed 3x in a row, untouched tests succeed 1 out of 3; database of test flakes

Fedora/RHEL

  • run upstream integration tests in downstream gating
  • the above approach allows us to upload current master until the latest freeze

Releases

  • automate everything: github, fedora, copr, PPA, dockerhub, home page (docs)
  • process in principle: create tag, write blog post
Clone this wiki locally