UNCLASSIFIED - NO CUI

Implement a simpler CI workflow

Why

Contributing to BigBang is hard enough, having to jump through CI hoops is making it even harder.

How

Proposal is two-fold, with the main goal being "simplify what contributors need to care about".

  • Adopt a merge policy for MRs going into master, with a rebase as cleanup being encouraged locally for stale/long branches
  • Set default target branch as master, and only requires 1 approver, and k3s tests to pass. Nightly runs perform all infrastructure tests in master, and tags (releases) can only be created from master after all tasks pass

Justification

Merge Policy

ff-only policy along with conventional commits enforcement is causing too much confusion and hassle for contributors. Combined with the suite of long running tests we require for every MR (on every commit) too often gets us into the awkward situations of either:

  1. needing to rebase because an MRs commit is out of date and then re-running an hours worth of CI
  2. needing to squash/overwrite a contributors commits because they didn't follow conventional commit standards, and then re-running an hours worth of CI
  3. asking a contributor to adopt conventional commits feels like a small but insurmountable barrier to entry for opensource projects (this one isn't really a fair statement, with better docs, MRs, etc we can very easily enforce this)
  4. ordering MRs into master because some change versions and need to be merged, then we need to repeat step 1, and then re-run an hours worth of CI

CI Gating

Requiring infrastructure tests to complete for every MR is becoming so much of a hassle that it's starting to block progress, and it's only going to get more time consuming as more clusters are added to the process.

General CI Improvements

Care should be taken to ensure BigBang deployment tests only need to run when the appropriate files change. For example, instead of relying solely on a docs branch to determine whether a BigBang install test is necessary, check that only *.yaml files have changed.

  • implement on_change gitlab ci rules where appropriate
Edited by joshwolf