Reputation: 710
I am using the OpenShift Jenkins image within an OpenShift Cluster. This default Jenkins image results in a Jenkins container that is preconfigured to point to my Kubernetes cluster. Additionally, the container has two Kubernetes pod templates defined, one for maven and one for nodejs.
What I would now like to do is use a declarative pipeline and reference these pods. I tried the following
agent {
kubernetes {
//cloud 'kubernetes'
label 'maven'
}
}
But that gives an error stating
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 4: Missing required parameter for agent type "kubernetes": containerTemplate @ line 4, column 10.
kubernetes { ^
All of the (examples) that I can find for declarative pipelines show the pod templates being defined when the agent is specified.
Is it possible to reuse already defined templates in a declarative pipeline?
Upvotes: 6
Views: 14837
Reputation: 3791
In fact, the error is related to the use of a bad version of the Kubernetes plugin, you need at least la version 1.6 as described in the wiki page.
Upvotes: 1
Reputation: 414
Here is an example using a pre-defined pod template.
pipeline {
agent {
label "maven"
}
stages {
stage('Run maven') {
steps {
sh 'mvn -version'
}
}
}
}
Your original pipeline definition was in effect defining a brand new pod template and hence the error enforcing the requirement for containerTeamplates
parameter. When using an existing template, you can simply specify the label in the agent
block.
Upvotes: 6