once a week (early monday) merge master into unstable
do it all at once so we can fail the entire merge if it fails, rather than have some bits merged and others not
job1
find all frameworks ➡ clone one repo ➡ get latest tag on master ➡ split version ➡ ls-remote all frameworks, verify they have version tagged ➡ abort or continue ➡ trigger job2
⬇
job2 [parameter tag; parameter list]
merge all parameter tag for all parameter list of frameworks ➡ if merge successful push to Neon/pending-merge
if all successful ➡ trigger job3
else ➡ abort
⬇
job3 (can be triggered at any time by anyone!)
for all frameworks ➡ merge Neon/pending-merge if it exists ➡ push all merged ➡ delete Neon/pending-merge for all pushedThis 3 part split allows fairly efficient and consistent handling. Automerge does not start unless ALL repos have a consistent tag mainline version (or supposedly excluding an override). The pending-merge temporary branch allows us to manually refine and prepare merges if automerge should fail. pending-merge would be available for everything that merged, regardless of whether something else did not merge (low human overhead). The final push being detached means a human can do partial merges out of order but still have them integrated all at once (e.g. adopting a package migration in kio.git and plasma-framework.git which requires substantial changes to the two).
Todo
make sure coverage is near 100%refactor Repo classes to share codetemplate jobsrubocop cleanupmove tagdetective to module NCI in code (namespace)make tagdetective use Data class for writingremove future observer from merger