= Code Valet

== Problem

The link:https://jenkins.io[Jenkins] project faces a challenge unusual to other
contemporary CI/CD tools in that it is downloaded and executed on a user's
machine(s) rather than as a service. While this offers quite a lot of
flexibility to the end-user, it puts Jenkins developers at a disadvantage for a
number of reasons:

. There is no direct return line of feedback from where their code is executed.
  No error reports, etc.
. There is a significant lag between developers releasing code and it being
  adopted/used.


== Solution

A free service which provides basic CI/CD functions with Jenkins as the core
platform. With a regularly updated "Jenkins distribution" consisting of many of
the key plugins which people are used, built from `master`, and rolled through
the Code Valet cluster:

. Blue Ocean
. GitHub Branch Source
. Pipeline
. ???

= Code Valet

== Problem

The link:https://jenkins.io[Jenkins] project faces a challenge unusual to other
contemporary CI/CD tools in that it is downloaded and executed on a user's
machine(s) rather than as a service. While this offers quite a lot of
flexibility to the end-user, it puts Jenkins developers at a disadvantage for a
number of reasons:

. There is no direct return line of feedback from where their code is executed.
  No error reports, etc.
. There is a significant lag between developers releasing code and it being
  adopted/used.


== Solution

A free service which provides basic CI/CD functions with Jenkins as the core
platform. With a regularly updated "Jenkins distribution" consisting of many of
the key plugins which people are used, built from `master`, and rolled through
the Code Valet cluster:

. Blue Ocean
. GitHub Branch Source
. Pipeline
. ???



== Architecture

WARNING: This is most definitely not set in stone


=== Control Plane


A Kubernetes cluster which will act as the control plane


=== Management

A webapp which acts as the primary controller, user interface for non-Jenkins
specific tasks:

. Surfacing logs from the Jenkins masters
.. Searchable logs for exceptions, etc
. Listing statistics from the other running Jenkins masters
.. Number of Pipelines active

=== Jenkins

Each GitHub user will have a per-user allocated Jenkins master which executes
as a container in this control plane. For example: `rtyler.codevalet.io` would
contain all the Pipelines which can be found inside of
`https://github.com/rtyler`

To start, new Jenkins masters will be configured manual (beta testing!) and
users will have access primarily through to
link:https://jenkins.io/projects/blueocean[Blue Ocean], but will **not** be
given administrative access to the Jenkins master.


Groovy scripting will set up some VM templates which will provide dynamically
provisioned agents in a cloud provider such as Azure, with a fixed quota, i.e.
2 active machines per.

Add a current thought dump on the architecture
Add a current thought dump on the architecture
