New features released in 0.9 include pipeline support and multiple containers per pod.
So now it is possible to define all the containers used in a job in your Jenkinsfile, for instance building a Maven project and a golang project in the same node without having to create any specific Docker image \o/
podTemplate(label: 'mypod', containers: [
containerTemplate(name: 'maven', image: 'maven:3.3.9-jdk-8-alpine', ttyEnabled: true, command: 'cat'),
containerTemplate(name: 'golang', image: 'golang:1.6.3-alpine', ttyEnabled: true, command: 'cat')
],
volumes: [secretVolume(secretName: 'shared-secrets', mountPath: '/etc/shared-secrets')]) {
node ('mypod') {
stage 'Get a Maven project'
git 'https://github.com/jenkinsci/kubernetes-plugin.git'
container('maven') {
stage 'Build a Maven project'
sh 'mvn clean install'
}
stage 'Get a Golang project'
git url: 'https://github.com/hashicorp/terraform.git'
container('golang') {
stage 'Build a Go project'
sh """
mkdir -p /go/src/github.com/hashicorp
ln -s `pwd` /go/src/github.com/hashicorp/terraform
cd /go/src/github.com/hashicorp/terraform && make core-dev
"""
}
}
}
- Make it possible to define more than one container inside a pod.
- Add new pod template step which allows defining / overriding a pod template from a pipeline script.
- Introduce pipeline step that allows choosing one of the containers of the pod and have all ‘sh’ steps executed there.
- allow setting dynamic pod volumes in pipelines
- Add support for persistent volume claims
- Add support for containerEnvVar’s in pipelines
- [JENKINS-37087] Handle multiple labels per pod correctly
- [JENKINS-37087] Iterate over all matching templates
- Fix slave description and labels
- [JENKINS-38829] Add help text for Kubernetes server certificate
- #59: Allow blank namespace and reuse whatever is discovered by the client.
- Ensure instanceCap defaults to unlimited
- Add Jenkins computer name to the container env vars
- Split arguments having quotes into account
- Allow the user to enable pseudo-TTY on container level.
- Use provided arguments without forcing jnlpmac and name into them. Provide placeholders for jnlpmac and name for the user to use. Fallback container uses as default arguments jnlpmac and name.
- Split volume classes into their own package (#77)