Jenkins Evaluation happened January 2021 and I believe that Jenkins is still improving. This post is supposed to be part of the bigger series with a unified structure.
– Pipeline definition completely lives in GIT together with code ~> Jenkinsfile
– Support for jenkinsfile via graddle DSL
– You can chain the pipelines
– Single pipeline triggered on various branches ~> Multi-branch pipelines (tutorial)
– Parallel pipeline stages
– Access to build meta-data (e.g. build-number, commit hash, …)
– Jenkins as a code plugin
– Managing secrets via secrets plugin
– Audit trail plugin
– Try notifier
– Better UI with Blue Ocean
– Tooling – Jenkins Job Builder (Job builder tutorial)
– Pull-request Jenkins pipeline
– Deployment topology – master x slave/agent
– Jenkins Helm deployment – seems has autoscaling agents – based on Configuration as a code plugin
– Manual approvals – seems as not so straightforward via input option
– Jenkins on Google Kubernetes Engine
– Default has no roles – all has single view -> plugins
– GitHub OAuth and here
– Role base authorisation plugin – (strategy plugin – role) – that probably doesn’t work together with gitHub OAuth, but can work with Matrix access
– Jenkins for beginners
Jenkins – one of the most popular open source CI/CD systems. Necessary to be self-hosted. But even Kubernetes plugin seems to have agent autoscaling capabilities which should be cost effective. Seems that whole Jenkins configuration can be bootstrapped from code.
Security model has various options not sure how all fits together e.g. gitHub OAuth + Roles and Securities but there is multiple ways e.g. control matrix.
Has concept of pipelines and jobs. Pipelines are next generation where they live completely in code-base ~> LTS should be ok. Seems that have some basic manual approvals stages, question how that goes together with auth. Has concept of multi-branch jobs/pipelines = single definition for whole bunch of branches where definition is dynamically taken from source.
CD capabilities are somewhat simplistic – no advanced release strategies. Like roll back, monitoring etc. That would need to be scripted probably.