Unison release process:
- Core project A, dependent projects B, C, and D tracking A through Voom
- [n] refers to a push
Day-to-day development:
- Push [1] to master on A
- CI triggers on push and builds [1]
- On success, lein-unison runs
update-projects
. Unison clones B, C, and D, checks out the freshen branch. If:merge
is set, master is merged into the freshen branch. lein-unison then updates all of their versions of A to the latest version in [1]. lein-unison commits to projects B, C, and D. - B [2], C [3], and D [4] are pushed
- CI triggers on push and builds [2]
- CI triggers on push and builds [3]
- CI triggers on push and builds [4]
Public release:
- Developer runs a release script for A locally
- This script checks out master, updates the version to a non-Voom version
- Script automatically commits and pushes [1]
- Script updates the version one point forward, and setting it back to snapshot
- Script automatically commits and pushes [2]
- CI triggers on push and builds [1]
- On success, lein-unison runs
update-projects
. Unison clones B, C, and D, checks out the freshen branch. If:merge
is set, master is merged into the freshen branch. lein-unison then updates all of their versions of A to the latest version in [1]. lein-unison commits to projects B, C, and D. B, C, and D now track A via its release versions. - B [3], C [4], and D [5] are pushed
- On further success of [1], lein-unison runs
release-projects
. Unison clones B, C, and D and checks out:release-branch
. Unison executes:release-script
in each repository in B, C, and D. Typically, this script will cut a new release of each. B, C, and D are pushed with release commits. [7], [8], [9] - CI triggers on push and builds [7]. Project B builds successfully and deploys its release version.
- CI triggers on push and builds [8]. Project C builds successfully and deploys its release version.
- CI triggers on push and builds [9]. Project D builds successfully and deploys its release version.
- CI triggers on push and builds [2]. This causes the usual process of building a SNAPSHOT from core to be built, as in the development scenario.