193837f Aug 9, 2018
1 contributor

Users who have contributed to this file

405 lines (319 sloc) 25.9 KB


Known issues

See the full list of issues at JIRA


  • Upgrade Jenkins to 2.121.2 #365


  • Using declarative, environment variables like COMMIT_ID, GIT_BRANCH are not populated. Use CheckoutScript to populate environment #364 JENKINS-52623



  • Add optional usage restriction for a Kubernetes cloud using folder properties #282



  • Global configuration testConnection using GET allows stealing credentials + CSRF SECURITY-1016



  • Add yamlFile option for Declarative agent to read yaml definition from a different file #355 JENKINS-52259


  • Avoid streaming to 2 similar OutputStreams #356


  • Combine all resources declared in requests and limits not just CPU and memory #350


  • Jenkins master in windows changes the file separator of mountPath incorrectly #308 JENKINS-47178


  • Update parent and Jenkins versions #349



  • Preserve unsupported directives in PodTemplate yaml, add explicit support for envFrom #348


  • Do not emit empty strings for resource requests/limits #342


  • Get the exit code the correct way. Solves problems with many pipeline steps that rely on tool outputs #300 JENKINS-50392



  • Do not print credentials in build output or logs. Only affects certain pipeline steps like withDockerRegistry. sh step is not affected SECURITY-883


  • Add option to apply caps only on alive pods #252
  • Add idleMinutes to pod template in declarative pipeline #336 JENKINS-51569


  • Use Jackson and Apache HttpComponents Client libraries from API plugins #333 JENKINS-51582



  • Transfer any master proxy related envs that the remoting jar uses to the pod templates with addMasterProxyEnvVars option #321


  • Some fields are not inherited from parent template (InheritFrom, InstanceCap, SlaveConnectTimeout, IdleMinutes, ActiveDeadlineSeconds, ServiceAccount, CustomWorkspaceVolumeEnabled) #319


  • Support multiple containers in declarative pipeline #306 JENKINS-48135
  • Expose pod configuration via yaml to UI and merge tolerations when inheriting #311
  • Resolve NPE merging yaml when resource requests/limits are not set #310
  • Do not pass arguments to jnlp container #315 JENKINS-50913




  • Allow creating Pod templates from yaml. This allows setting all possible fields in Kubernetes API using yaml JENKINS-50282 #275
  • Print agent specification upon node allocation #302



  • Support passing kubeconfig file as credentials using secretFile credentials JENKINS-49817 #294
  • Allow customization of NodeProvisioner.PlannedNode using extension point #298


  • Upgrade kubernetes-client to 3.1.10 #271
  • Copy jenkinsTunnel in copy constructor #295


  • Fix ssh-agent execution inside container. envVars on procstarter were discarded JENKINS-42582 #291
  • Allow specifying a different shell command other than /bin/sh #287



  • Implement extension points to contribute pod templates and filter them JENKINS-49594 #288


  • Don't persist PodTemplateMap and implement onResume in PodTemplateStep. Will prevent potential leaking of dynamic pod templates definitions across restarts JENKINS-47759 #285
  • Provide injection of run context (build level) environment variables for container steps in declarative pipeline usage JENKINS-49465 #285
  • Fix global environment variables JENKINS-47376 #245



  • Store definition of dynamic templates to a separate configuration than Kubernetes cloud JENKINS-49166 #279
    • This can cause some side effects on the order the templates are picked, see
  • Prevent unneeded exec operations #239


  • Fix UI support of environment variables JENKINS-47112 #273
  • Missing call to slave.terminate() #256
  • Rename slave -> agent #258
  • Add new line when logging the agent in Jenkins #267


  • Namespace is erroneously autodetected as 'default' #261
  • Do not require 2.89 for installation, revert to 2.32.1 #263
  • IllegalStateException at hudson.XmlFile.replaceIfNotAtTopLevel JENKINS-45892 #257


  • Fix agent reconnection after master restart JENKINS-47476 #244
  • Wait 5s for complete disconnection of agents to avoid stack trace #248
  • If namespace is not provided nor autoconfigured should use default #234
  • Kubernetes plugin not using cmd proc variables, affecting sshagent step JENKINS-47225#236
  • Escape quotes in environment variables JENKINS-46670#218


  • Only allow tasks after all containers in pod are ready #230
  • Add activeDeadlineSeconds to Pod template #221
  • Default podTemplate slaveConnectTimeout to 100 #235
  • Allow overriding HOME env var and remove duplicated env vars #224
  • Rename jenkinsci/jnlp-slave -> jenkins/jnlp-slave and upgrade to 3.10-1 #231
  • Do not use a tty to prevent nohup.out from being created JENKINS-46087 #212
  • Pod annotations cannot contain duplicate keys when combining pod templates #220
  • Kubernetes agents not getting deleted in Jenkins after pods are deleted JENKINS-35246 #217
  • Remove unused JENKINS_JNLP_URL env var #219


  • containerLog step to get the logs of a container running in the agent pod JENKINS-46085 #195
  • Autoconfigure cloud if kubernetes url is not set #208
  • Change containerCap and instanceCap 0 to mean do not use JENKINS-45845 #199
  • Add environment variables to container from a secret JENKINS-39867 #162
  • Deprecate containerEnvVar for envVar and added secretEnvVar
  • Enable setting slaveConnectTimeout in podTemplate defined in pipeline #213
  • Read Jenkins URL from cloud configuration or KUBERNETES_JENKINS_URL env var #216
  • Make withEnv work inside a container JENKINS-46278 #204
  • Close resource leak, fix broken pipe error. Make number of concurrent requests to Kubernetes configurable JENKINS-40825 #182
  • Delete pods in the cloud namespace when pod namespace is not defined JENKINS-45910 #192
  • Use Util.replaceMacro instead of our custom replacement logic. Behavior change: when a var is not defined it is not replaced, ie. ${key1} or ${key2} or ${key3} -> value1 or value2 or ${key3} #198
  • Allow to create non-configurable instances programmatically #191
  • Do not cache kubernetes connection to reflect config changes and credential expiration JENKINS-39867 #189
  • Inherit podAnnotations when inheriting pod templates #209
  • Remove unneeded plugin dependencies, make pipeline-model-extensions optional #214


  • Add an experimental Declarative Agent extension for Kubernetes JENKINS-41758 #127
  • Implement Port mapping #165
  • Support idleMinutes field in pipeline #154
  • Add command liveness probe support #158
  • Add toggle for node usage mode #158
  • Add namespace support on PodTemplate.
  • Make PodTemplate optional within pipeline JENKINS-42315
  • Make Slave Jenkins connection timeout configurable #141
  • Fix durable pipeline PID NumberFormatException JENKINS-42048 #157
  • Don't provision nodes if there are no PodTemplates set to usage mode Normal #171
  • Refactoring add/set methods in PodTemplate #173
  • Delete the build pod after we have finished with the template block #172
  • Default to use the kubernetes.default.svc.cluster.local endpoint
  • Do not print stack trace on ConnectException
  • Upgrade kubernetes client to 2.3.1 JENKINS-44189
  • Step namespace should have priority over anything else #161
  • Wait for pod to exist up to 60 seconds before erroring #155
  • Catch IOException on ContainerExecProc#kill
  • Do not print stack trace on connection exception
  • Restore random naming for pipeline managed pod templates.
  • Dir context is not honored by shell step JENKINS-40925 #146
  • Limit pod name to 63 characters, and change the randomly generated string #143
  • Fix workingDir inheritance error #136
  • Use name instead of label for the nesting stack #137
  • Exception in configure page when 'Kubernetes URL' isn't filled JENKINS-45282 #174
  • kubectl temporary config file should work where Jenkins project contains spaces #178
  • Thread/connection leak #177


  • Pod Template "Annotations" Field #105
  • The workspace volume is now configurable #114
  • Allow the user to configure a pod template that will be used for providing the default values. #133
  • Cleanup environment variable mapping, allow overriding HOME env variable #128
  • When upgrading from <0.9 set the container name to jnlp. To avoid creating an extra container, the one that exists and the new jnlp auto generated #132
  • Make the name field in the pod template the pod name #134
  • [JENKINS-41847] NPE in addProvisionedSlave when label is null #129
  • [JENKINS-41725] NPE in PodTemplateUtils.combine #130
  • [JENKINS-41287] Fix error when job contains spaces #131
  • Remove node if pod startup fails #122
  • Avoid NPE if cloud is deleted or renamed #118
  • Fixing deletion of containers in pod templates, containers property is databound #113
  • Prevent NPE in PodTemplateAction #112
  • [JENKINS-40457] java.lang.ArrayStoreException when a image pull secret is defined #111


  • NOTE if you have defined a JNLP container in your Pod definition, you need to remove it or rename it to jnlp, otherwise a new container called jnlp will be created. Set "Arguments to pass to the command" to ${computer.jnlpmac} ${}
  • Fixing checkbox serialization by jelly views #110
  • Do not throw exceptions in the test configuration page #107
  • Upgrade to the latest kubernetes-client version. #106
  • feat: make pipeline support instanceCap field #102
  • Instantiating Kubernetes Client with proper config in Container Steps #104
  • Fix NPE when slaves are read from disk #103
  • [JENKINS-39867] Upgrade fabric8 to 1.4.26 #101
  • The pod watcher now checks readiness of the right pod. #97
  • Fix logic for waitUntilContainerIsReady #95
  • instanceCap is not used in pipeline #92
  • Allow nesting of templates for inheritance. #94
  • Wait until all containers are in ready state before starting the slave #93
  • Adding basic retention for idle slaves, using the idleTimeout setting properly #91
  • Improve the inheritFrom functionality to better cover containers and volumes. #84
  • Fix null pointer exceptions. #89
  • fix PvcVolume jelly templates path #90
  • Added tool installations to the pod template. #85
  • fix configmap volume name #87
  • set the serviceAccount when creating new pods #86
  • Read and connect timeout are now correctly used to configure the client. #82
  • Fix nodeSelector in podTemplate #83
  • Use the client's namespace when deleting a pod (fixes a regression preventing pods to delete). #81


  • 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)


  • Add ability to define list of image pull secrets for pod template
  • Fix name printing
  • [JENKINS-36253] Add Annotations to Pod Template
  • Add support for NFS volumes (#63)
  • Change health check url for one that works (Jenkins 2 enables CSRF protection and security by default)
  • Issue #59 Allow autodiscovery of namespace
  • Update kubernetes-client
  • Add support for service account


  • Set HOME and working dir for build to execute into slave agent remoteFS (#57)
  • JENKINS-34840 Fix NPE when node selector is null
  • Add resouce request and limit to container
  • Generate Cloud Slave node base on pod template name
  • check for null prior to ranging over template.getEnvVars() (#61)
  • Fix StringIndexOutOfBoundsException in slave name


  • Add support for secrets and empty dir volumes
  • Add support for nodeSelector in pod templates
  • Add support for storing OpenShift OAuth access token as credential
  • Allow client certificate as kubernetes api credentials (JENKINS-30894)
  • Fix ArrayIndexOutOfBoundsException building node selector map when field is empty on the configuration (JENKINS-33649)
  • Add support for env variables
  • Add checkbox for image pull policy


  • Update fabric8 client for Kubernetes to 2.2.16
  • Use a replication controller to run Jenkins master
  • Generate OpenShift OAuth Bearer token on demand based on user credentials
  • Add support for Container Cleanup Timeout
  • Fix JENKINS-31076 — Proper message if credentials are not defined or not found
  • Add support for hostPath volumes


  • Avoid looooooong slave name
  • Support token based authentication for CLI


  • Use a Bearer token to connect to API master (typically to connect to OpenShift Origin)
  • Enable a dedicated credential type when jenkins do run inside kubernetes with service account enabled, so cloud can be setup with a fixed configuration, but actual credentials get injected at runtime


  • Replace obsolete Kubernetes client library with Fabric8
  • Let user configure the kubernetes cluster CA root certificate for self-signed deployment (typically, Google Container Engine)
  • Upgrade Docker-plugin dependency to 0.9.4 - warning: 0.10 is incompatible


  • Initial implementation