# Holochain Launcher CI/CD integration ###### tags: `launcher`, `release` ## Goals * Launcher binary is attached to holochain releases on github * ideally: release of launcher happens automatically ## Challenges * launcher package includes multiple holochain versions * launcher depends on the [rust holochain client](https://github.com/holochain/holochain-client-rust), which also needs to be upgraded to a new holochain version * We should automate its releases as well * launcher will soon integrate the devhub happ. * devhub is spread across 5 repos * devhub, being a happ, may break due to hdk changes in the new holochain release * Updating to holochain versions when DNA/HDK remains the same: When can we move a set of hApps from one version of holochain to another, i.e. ones that only have bug-fixes and no breaking changes at the data layer, and maybe have breaking changes at the network level (when HDK is the same and DNA hash is the same)? * We have to support some level of this, otherwise there are too many conductor instances? * Turning off old conductor versions. ## idea ### loose coupling of launcher and devhub * on startup, launcher discovers an appropriate version of the devhub webhapp * appropriate here means a version that is compatible with one of the supported (integrated) holochain versions * the build of the new launcher release would succeed. however failure could still happen at runtime if there's not compatible devhub version with any of the included holochain versions #### questions * do we want to fail the relase in case of no compatible devhub release available at release time? --- ## Taxonomy of updating: - DNA hash changed - Integrity-crate changes (Host/Guest interface, or actual feature) - DNA hash not changed = Same HDK - Non-integrity crate changes - Fully automatable by new launcher version: - bug fix, folder automatically renamable with no effect - Requires manual intervention to update: - bug fix, folder renamble manually with unknown connection effect, but no data problem - data change but folder data contents migratable by some holochain core process (i.e. sql table format change, etc.) ## Re-Taxonomy w/ respect to app continuity - **No change:** Apps running in prior release can run in this release unchanged - [ ] hdi change - [ ] hdk change (or host/guest interface change) - [ ] holochain core structure changes - [ ] holochain network changes - **Must run system update:** Prior apps require no change, but an update script must be run for running apps (e.g. to databases or config format). - [ ] hdi change - [ ] hdk change (or host/guest interface change) - [x] holochain core structure changes - [ ] holochain network changes - **Re-compile only:** Apps running in prior release must be recompiled but no changes to app code is required. (e.g. guest/host interface has changed) - [ ] hdi change - [x] hdk change (or host/guest interface change) - [ ] holochain core structure changes - [ ] holochain network changes - **Re-compile & sys update:** - [ ] hdi change **minor** change - [x] hdk change (or host/guest interface change) - [x] holochain core structure changes - [ ] holochain network changes - **Code-Modification:** You will need to change code in your app because of a breaking change to IDK - [x] hdi change **major** change - [ ] ? hdk change (or host/guest interface change) - [ ] holochain core structure changes - [ ] holochain network changes - --- The launcher should present a switchboard with the map: HolochainVersion -> folder -> InstalledApps -> InstalledCells ## scratchpad Launcher 0.4.0 - Holochain v0.0.132 - Devhub 0.0.1 compiled with hdk 0.0.127 - All the apps for hdk v0.0.127 - All the apps for hdk v0.0.128 - Holochain v0.0.133 Launcher -> Holochain * admin websocket API * holochain types crate Launcher -> lair-keystore * launches keystore directly Launcher -> DevHub (soon) * gets the devhub web-happ and installs it via the holochain admin API DevHub -> Holochain * Holochain HDK