Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save bridgethillyer/957836bef620541c6322 to your computer and use it in GitHub Desktop.
Save bridgethillyer/957836bef620541c6322 to your computer and use it in GitHub Desktop.
Notes from the walkthrough of Onyx's release process
Onyx release process walkthrough Feb 21, 2016 - Michael Drogalis, Gardner Vickers, Bridget Hillyer
* project.clj in onyx-core repo
* Release onyx-core, want to release all the other plugins so versions match
* catch problematic patches in core before they affect the plugins
* Plugins: include a 4th verison # so they can be released separate from core
* lein-unison - https://github.com/LonoCloud/lein-unison - Mike wrote this plugin for the syncing
* Circle CI: Can have branch-specific operations
- always deploys to clojars
- release-projects only happens in a release build
* lein-unison keeps all the projects in unison
- :unison in project.clj
- in lein-unison: unison iterates through all the projects in :unison :repos
- :branch "compatibility" read-only
- always has latest onyx core version - uses voom to get latest from git repo
- voom - https://github.com/LonoCloud/lein-voom - plugin that lets you depend on a commit sha
- so lets you know whenever something broke the build
* lein unison update-projects
- clones the projects into the build machine
- merges in latest from master
- then bumps the project version
* lein unison release-projects
- with a version branch
- so you know where you want to push it ultimately
- iterates through all projects
- clones the projects onto build machine
- checkout release branch
- executes release script
- most projects: scripts/release.sh
* release.sh
- 2 args: new version and new release branch
- automatically release to clojars
- sets projects.clj snapshot version: lein set-version
* master branch launches this process
* release a minor plugin version
- just run the plugin's release.sh locally
* Bug in Circle CI
- multiple ssh keys - doesn't intelligently name the files
- freshen the ssh config
- we have ssh key for each project
* circle.yml
- there is a Circle tutotial for how this works
* generative tests run on Circle
* Jepsen tests - not on Circle
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment