rick / branch-deploy

fast branch deployments with preview diffs
MIT License
1 stars 0 forks source link

Initial roadmap #4

Open rick opened 1 year ago

rick commented 1 year ago

image

Goal

We (especially @jameswhite and I) have need of an efficient, (dependency-) lightweight single-purpose tool to facilitate "branch deploys", and "branch diffs" for continuing to develop "on-system" software.

This differs from the various ways and tools to deploy (micro-)services and web apps to cloud platforms, kubernetes, etc., for which there are many CI/CD tools and processes.

"On-system?"

By "on-system" software I mean that we are often managing the operating-system level files on a host machine. For instance, files in /etc, configurations of things like LDAP servers, Nagios monitoring, TFTP/PXE configurations, etc.

"Host?"

By "host" we mean a computer, which could be bare metal, a virtual machine (for instance in a VMWare instantiation), a container, a remote cloud-hosted instance. We expect the host to have a running OS and kernel, most often running Linux, but configuration may be minimal.

"source host?", "target host?"

In the timeline below we use these terms to refer to how this deployment tool operates. The "source host" is either a CI instance or some other host which is initiating a deployment, which triggers a branch deployment and/or branch diff onto a "target host". The "target host" is the host where our changes are being deployed (or proposed).

"bd?"

The working name for the command-line tool which is invoked to do branch deployments is bd. This could change depending on whims.

"branch deploys?", "branch diffs?"

[Old man voice:] Back when we worked at GitHub, we deployed software (web applications, supporting tooling, host configurations, eventually network configurations, etc.) using a specific process:

This is often colloquially referred to as the "GitHub Flow", especially if these operations are undertaken via ChatOps.

Over time, for changes which were less "web application software" and more likely to be systems level software (OS configurations, authorization configurations, network changes), the "branch deploy" phase was often preceded by:

This process, taken together with the technique of separating the deployment and setup of a systems level tool (LDAP, puppet, nagios, vault, or systems such as Entitlements), from the data contents of that tool -- each of which can have its own branch deployment lifecycle -- is sometimes colloquially called the "KP Flow", after Kevin Paulisse who refined and spread this pattern during his time at GitHub.

Development constraints

Timeline

rick commented 1 year ago

Updated roadmap pursuant to conversations with @jameswhite