Public | Automated Build

Last pushed: a year ago
Short Description
Jenkins in Kubernetes
Full Description

<img src="imgs/kube_logo.png"/>

DSL Jobs for Jenkins in Kubernetes

<img src="imgs/jenkins_logo.png"/>

1. Kubernetes ReplicationController and service for Jenkins

1.1 Create Kubernetes ReplicationController for Jenkins (master) container using jenkins-rc.yaml:

kubectl create -f kube/jenkins-rc.yaml

1.2 Create Kubernetes service for Jenkins using jenkins-service.yaml

NOTE: At this stage in the command output you should notice the TCP ports which are assigned for Jenkins UI and discovery services:

kubectl create -f kube/jenkins-service.yaml

NOTE: if you want to attach build slave servers through JNLP (Java Web Start): make sure you map the port: 50000 - which will be used when you connect a slave agent. If you are only using ssh-slaves, then you do NOT need to put port 50000 mapping.

1.3 Check created service status:
kubectl logs jenkins

2. DSL Jobs Usage

2.1 Connect to Jenkins UI

Open web browser and type Kubernetes node IP address and TCP port noticed at 1.2 stage. You might see Jenkinse welcome page as below:

2.2 Upgrade Jenkins Plugins (optional)

Go to "Manage Jenkins" - "Plugin Manager".
Select plugins you want to update and complete updating with Jenkins restart.

2.3 Create simple Jenkins DSL seed job

Click "create new jobs" link in welcome screen, choose "Freestyle project" and name it somehow

Choose "Use the provided DSL script" and paste file dsl-seed-job-simple.goovy
content to the form:

NOTE: In the seed job we creating regular job "DSL-Tutorial-1" which clones git repository from giturl on the described in triggers section schedule and accomplish task described in steps (just printing "Step N1", but you may define any command or script).
Possible options are documented at Jenkins Job DSL API
resource and this manual is quite comprehensive.

You'll get job creation result page with the generated job name in the "Generated item" section%

Click "Build Now" and check console output - it should look like this:

Go "Back to Project" then "Back to Dashboard" and checkout generated job "DSL-Tutorial-1-Test"

The "DSL-Tutorial-1" job has been generated from our DSL seed job "job-dsl-1" and should run as scheduled in triggers section of seed job or you may start it manually by pressing on "Build Now" option.

Results can be observed in the Console Output and should contain Finished: SUCCESS line:

2.4 Create Jenkins DSL seed job with loop

Create new seed DSL job and paste dsl-seed-job-loop.groovy content to "Use the provided DSL script" form. In this job we manage Jenkins to create several jobs with the index number in the name.
Now if you build it you'll get a number of generated jobs in the Dashboard:

And all of those jobs will run with parameters, schedules, credentials, commands or other handles defined in the loop.

Docker Pull Command
Source Repository