/
Adapt pipeline to run on the kubernetes agents

Adapt pipeline to run on the kubernetes agents

The main documentation is here: https://plugins.jenkins.io/kubernetes/#plugin-content-usage

The first thing that you need to understand that the main template of the kubernetes agent pod does not include any sidecar containers. It includes only one jnlp container based on this image https://hub.docker.com/r/jenkins/inbound-agent. To add any sidecar containers to the pod you should create new podTemplate right in the pipeline, inherit it from main template and add all that you need there. See examples below:

Scripted pipeline
podTemplate(containers: [
    containerTemplate(name: 'maven', image: 'maven:3.8.1-jdk-8', command: 'sleep', args: '99d'),
    containerTemplate(name: 'golang', image: 'golang:1.16.5', command: 'sleep', args: '99d')
  ]) {

    node(POD_LABEL) {
    }
}
Declarative pipeline
pipeline {
  agent {
    kubernetes {
      yaml '''
        apiVersion: v1
        kind: Pod
        metadata:
          labels:
            some-label: some-label-value
        spec:
          containers:
          - name: maven
            image: maven:alpine
            command:
            - cat
            tty: true
          - name: busybox
            image: busybox
            command:
            - cat
            tty: true
        '''
      retries 2
    }
  }
  stages {
    stage('Run maven') {
      steps {
        container('maven') {
          sh 'mvn -version'
        }
        container('busybox') {
          sh '/bin/busybox'
        }
      }
    }
  }
}


Sidecar containers in this setup are used for running any custom command that we run before in docker container (terraform, cypress, aws, kubectl, etc). They automatically share workspace with the main container so you can use all files from it. To run anything inside one of the sidecar containers you need to wrap it with container directive as shown below:

container('maven') {
    stage('Build a Maven project') {
        sh 'mvn -B -ntp clean install'
    }
}






Related content

Create project/namespace with modules from branch
Create project/namespace with modules from branch
Read with this
deployModuleFromFeatureBranchEureka Jenkins Pipeline
deployModuleFromFeatureBranchEureka Jenkins Pipeline
More like this
How to work with Rancher environments
How to work with Rancher environments
Read with this
deployModule Jenkins Pipeline
deployModule Jenkins Pipeline
More like this
Scope
More like this
Deploy Sidecar from feature branch
Deploy Sidecar from feature branch
More like this