Jenkins World 2018 Demo

Jenkins CI logo Ubuntu Logo Red Hat Logo Docker Logo Vagrant Logo

Welcome to Sam Gleske's Jenkins World 2018 presentation technical demo.

Presentation abstract

Title: Scaling developer onboarding in Fortune 50 and smaller organizations

This presentation is going to cover how a small CI/CD team can manage Jenkins infrastructure to onboard thousands of engineers and reduce time to market as a direct result.

Sections of the presentation:

  • Eye Candy: The developer onboarding experience
  • Jenkins development announcements
  • Development workflow for delivering software at scale.
  • Managing immutable infrastructure for Jenkins as a service within a large organization.
  • Let's be real: what do I need to learn?
  • Tech Demo: Show and tell a real workflow

What does this repository represent?

This project provides the following functionality:

  • A Jenkins master which can be bootstrapped using Docker and docker-compose. The master also serves as an agent and runs docker in docker to support ephemeral agents inside of the master docker container.
  • A Jenkins Pipeline Shared Global Library which is meant to extend the Jervis shared pipeline library. See what Jervis provides in ./jervis/vars/.
  • Job DSL scripts which are extensions of the Jervis job DSL scripts. See what Jervis provides in ./jervis/jobs/.
  • An immutable infrastructure image for the master running in Docker.
  • An immutable infrastructure image for the agent running in Docker.
  • Configuration as code for a Jenkins server.

Prerequisites

Create secret-env.sh

Add secret-env.sh at the root of this repository with the following contents.

export DEMO_GITHUB_USER=<github user>
export DEMO_GITHUB_TOKEN=<github personal access token>
export DEMO_UUID=$(uuidgen)

The GitHub personal access token should have scopes repo, read:org, and user:email. In production I also add the admin:repo_hook scope as well. However, that's not necessary for the demo.

System requirements

Start Demo

Provision Jenkins with docker in docker.

docker-compose up -d

Configure Jenkins.

source secret-env.sh
./jenkins_bootstrap.sh

Shell access

To gain shell access to the jenkins server including the docker in docker environment.

docker-compose exec -u jenkins jenkins /bin/bash