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:
- needing to rebase because an MRs commit is out of date and then re-running an hours worth of CI
- needing to squash/overwrite a contributors commits because they didn't follow conventional commit standards, and then re-running an hours worth of CI
- 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)
- 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 cirules
where appropriate