Certified Jenkins Engineer

Introduction and Basics

Problem Statement Meeting with Dasher Team

This article examines the DevOps prerequisites of Dasher Technology and demonstrates how GitHub Actions can streamline their CI/CD workflow.

Dasher Technology offers a platform that integrates data, applications, and devices across on-premises environments. Their R&D team is exploring cloud migration and containerization, starting with a Node.js project before extending to Java and Python applications. To spearhead this, they formed a DevOps team led by Alice, whose mission is to design and implement a best-practice CI/CD pipeline on a multi-cloud infrastructure using Docker and Kubernetes.

Current State and Challenges

Alice’s assessment uncovered several critical gaps in the existing Node.js project:

  • No version control system in place
  • Developers work in isolation with manual code integration
  • Slow, error-prone testing and infrequent merges
  • Manual deployments across development, staging, and production

Warning

Without version control and automation, release risk is high and collaboration suffers.

The image outlines the DevOps requirements for the Task Dash Team, highlighting processes like code integration, collaboration, manual testing, and deployment, alongside automated tasks such as unit testing, code coverage, building, pushing, deploying, and automated IT.

Defining the CI/CD Pipeline

To address these challenges, Alice defined a CI/CD pipeline with these stages:

  1. Adopt GitHub for version control and team collaboration
  2. Automate unit tests and measure code coverage
  3. Build and push Docker images
  4. Deploy the application to Kubernetes
  5. Run automated integration tests

Evaluating CI/CD Tools

The market offers many CI/CD solutions:

ToolProsCons
JenkinsExtensible, self-hosted, large plugin libraryManual maintenance, steep learning curve
Travis CIEasy cloud setup, GitHub integrationLimited concurrency in open-source tier
CircleCIFast workflows, SSH debuggingUsage-based pricing
SpinnakerKubernetes-centric, advanced deployment modelsComplex configuration
BambooTight Jira integrationLicense costs

These tools require provisioning servers, installing dependencies, and ongoing management. As projects multiply (Java, Python, AWS, Azure), manual overhead grows:

The image lists traditional CI/CD tools and their challenges, featuring logos for Java, Maven, Python, Azure, AWS CLI, Trivy, and Kubesec.

Jenkins Setup: Manual Steps

If choosing Jenkins, the initial setup includes:

StepDescription
1Provision VM with CPU, memory, and disk
2Install Java JDK
3Configure firewall rules
4Install Jenkins and required plugins
5Install Node.js, npm (multiple versions)
6Install Docker for image builds
7Install kubectl, Helm, and other Kubernetes clients
8Add CLIs for integration testing and reporting

Note

As the ecosystem expands, you may also need Maven, Python, AWS CLI, Trivy, KubeSec, and other DevSecOps tools.

Why GitHub Actions?

Alice needed a solution that:

  • Requires minimal setup and no separate infrastructure
  • Lets the team focus on pipeline development, not server management
  • Scales automatically across multiple languages and clouds

After evaluation, GitHub Actions emerged as the best fit. In the next sections, we will:

  • Initialize the GitHub repository for Node.js
  • Configure workflows for testing and code coverage
  • Build and publish Docker images
  • Deploy to Kubernetes using kubectl and Helm
  • Automate end-to-end integration tests

Watch Video

Watch video content

Previous
Course Introduction