Xin Cheng
3 min readMay 5, 2020

--

Hello world to Jenkins X

World is changing fast, so is software development. To deal with the quick change, there are lots of methodologies, e.g. agile, scrum. However, there is also mindset change, we need transparent communication through the code (which means developer should make their change as early as possible, in small batches). This is very important in microservice team (two-pizza teams), and is encouraged by trunk-based development.

Certainly, when you encourage frequent transparent communication through code, that means your developers are going to commit changes frequently. If they don’t have tool to support automatic verification, deployment, it is going to be messy since there is no way to auto-screen bad commits (imagine you always need your boss to review the code). That’s why CI/CD, DevOps are hot these years (recently read an article saying developer most interested topics are DevOps, Cloud, AI).

However, to implement an enterprise-ready CI/CD infrastructure is also not easy. DevOps is a practice by itself. There so many tools to learn, let alone setup infrastructure correctly.

So it is best that there is some quick start template infrastructure you can use. It should incorporate some common CI/CD best practice, can deal with commonly-used-language project, out of the box. Of course, when you want more customized control, you can easily customize the flow.

Jenkins X is a cloud-native CI/CD platform, which means it runs on Kubernetes (so can cross-cloud easily). It is serverless, meaning you don’t need dedicated Jenkins infrastructure, spare capacity can be leveraged by other workloads on Kubernetes cluster.

As I see it, Jenkins X provides an opinionated approach to CI/CD (tool it picks, methodology is GitOps). I like this approach, you need to do one thing and do it well. It is better than doing many things, but not do well.

To get started, here are main steps:

  1. Install Jenkins X CLI
  2. Create Kubernetes cluster
  3. Bootstrap Jenkins X on Kubernetes cluster
  4. Create quickstart project template and have fun

Detailed steps

  1. Jenkins X CLI from location below
    https://jenkins-x.io/docs/getting-started/setup/boot/clouds/amazon/
  2. I am using EKS, so download eksctl
    https://eksctl.io/
    kubectl
    https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html
    create EKS
    jx create cluster eks — skip-installation — no-default-environments
  3. Use jx boot to bootstrap Jenkins X infrastructure
    a) Download boot config
    https://github.com/jenkins-x/jenkins-x-boot-config
    b) Change jx-requirements.yml provider to eks
    https://github.com/jenkins-x/jx/issues/5418
    c) Run “jx boot”
  4. Run “jx create quickstart” and pick your favorite language
    https://jenkins-x.io/commands/jx_create_quickstart/
  5. The last thing jx create quickstart does is print a handful handy commands, e.g.:
Watch pipeline activity via:    jx get activity -f foo -w
Browse the pipeline log via: jx get build logs <repo>/foo/master
You can list the pipelines via: jx get pipelines
When the pipeline is complete: jx get applications

The only problem I encountered is that it does not work with “mlquickstart” very well. However, there is another open source Seldon project, leave it for next time.

--

--

Xin Cheng

Multi/Hybrid-cloud, Kubernetes, cloud-native, big data, machine learning, IoT developer/architect, 3x Azure-certified, 3x AWS-certified, 2x GCP-certified