Welcome to Sam Gleske's Jenkins World 2018 presentation technical demo.
- Presentation slides
- Screenshots of tech demo (prepared in case demo doesn't work)
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
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.
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.
- If using Linux, Docker and docker-compose must be installed and running.
- If using Mac, Vagrant and VirtualBox must be installed. Docker for mac is not stable enough to run this demo smoothly. Refer to the instructions for vagrant instead of this README.
Provision Jenkins with docker in docker.
docker-compose up -d
Configure Jenkins.
source secret-env.sh
./jenkins_bootstrap.sh
To gain shell access to the jenkins server including the docker in docker environment.
docker-compose exec -u jenkins jenkins /bin/bash