The jenkins-X is based on kubernetes, and use the Sidecar pattern too. However
I just want a jenkinsfile interceptor, but got the full kubernete/helm instances(buy, install, and maintain the kubernetes clusters, and configure the F**K yaml)
Single-vendor lock in, using CD only with kubernates/GitHub.
It’s hard to customize own steps, and bind with a fixed git methodology/YAML.
Here is my solution, every masters are independence, where data get eventually consistency with low latency
Summary
All components are made with opensource products.
multiple-clouds Jenkins
This solution is not a smart solution, but saves your time
No stronghly bind with any cloud platforms(Kubernetes/Nomad/Mesos).
Most works will be transformed into a Spring/Database based project -> They are cost-effective, easy to be designed, developed and matainted, and make employee recruitment or outsourcing easier.
Client
Create and send raw XML to jenkins instances.
Inside the XML, the payload can be Jenkinsfile, YAML, JSON, or the other DSL.
Job definitions will be saved into a database(pg/mysql/elk).
Data lake
ELK/KsqlDB: ETL, grafana and visualization.
Jenkins shell step need to be reimplemented with redirect for centralized logs.
Jenkins
Modifications with jenkins.war and other plugins are not required. PAAS bind naming services(k8s/nomad) are also not required.
Just create a jenkins plugin(not open sourced here)
Use hudson.model.listeners.RunListener to send back job results(RUNNING/SUCCESS/FAIL).