/docker-jenkins

Jenkins with Blue Ocean and support for builiding jobs in Docker

MIT LicenseMIT

Jenkins with Blue Ocean and support for building jobs in Docker

For a new Jenkins experience.

Supported tags and respective Dockerfile links

dockeri.co

GitHub issues GitHub stars

Based on the Official Jenkins Docker image. This image adds support for running Docker CLI inside the Jenkins container and building the jobs using declarative pipelines with Docker. Bundled with Blue Ocean.

Note on the image

The image is automatically built on any change pushed to the Shimmi/docker-jenkins repo and/or when original Jenkins image changes.

What is a Pipeline?

Pipelines are a series of steps that allow you to orchestrate the work required to build, test and deploy applications. Pipelines are defined in a file called Jenkinsfile that is stored in the root of your project’s source repository.

What is a Declarative pipeline?

Announced at Jenkins World on 14th of September 2016 along with the Blue Ocean, the Declarative pipeline is a new way of how to configure the Pipelines rather than script them.

Docker support in Declarative Pipeline allows you to version your application code, Jenkins Pipeline configuration, and the environment where your pipeline will run, all in a single repository. It’s a crazy powerful combination.

Declarative Pipeline introduces the postBuild section that makes it easy to run things conditionally at the end of your Pipeline without the complexity of the try... catch of Pipeline script.

Example of Declarative pipeline

pipeline {
  agent { docker 'php' }
  stages {
    stage('build') {
      steps {
        sh 'php --version'    
      }
    }
  }
}

See additional basic examples in another language.

What is a Blue Ocean?

Blue Ocean is a new project that rethinks the user experience of Jenkins. Designed from the ground up for Jenkins Pipeline and compatible with Freestyle jobs, Blue Ocean reduces clutter and increases clarity for every member of your team.

Blue Ocean

Usage

Please refer to the official documentation description for additional configuration and usage of the Jenkins docker image.

Using docker-compose

  1. Clone the repo or just the docker-compose.yml file.
  2. Go to that folder and run docker-compose up -d.

Solving "docker.sock is not a valid Windows path" error

If you are getting this error (on Docker version 18 and above), please set environment variable COMPOSE_CONVERT_WINDOWS_PATHS to true.

E.g. In Powershell, you can do: $env:COMPOSE_CONVERT_WINDOWS_PATHS=1.

See docker/compose#4240 issue for more info.

Upgrading

  1. Prepare Jenkins to shutdown (Manage Jenkins > Prepare for Shutdown).
  2. Go to your docker-compose.yml folder.
  3. Run docker-compose up -d again to recreate the container with new image and run it as a daemon.

Using docker run

You can also run the image without any cloning by using the docker run command.

docker run -d --name my_jenkins -v /your/home/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 --group-add docker shimmi/jenkins

Please alter the /your/home/jenkins_home path to your needs.

E.g. On windows:

docker run -d --name my_jenkins -v /C/Users/<your-profile>/Documents/docker/jenkins/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 --group-add docker shimmi/jenkins

Resources