3
votes

Installed Jenkins using helm

helm install --name jenkins -f values.yaml stable/jenkins

Jenkins Plugin Installed

- kubernetes:1.12.6
- workflow-job:2.31
- workflow-aggregator:2.5
- credentials-binding:1.16
- git:3.9.3
- docker:1.1.6

Defined Jenkins pipeline to build docker container

node {
    checkout scm

    def customImage = docker.build("my-image:${env.BUILD_ID}")

    customImage.inside {
        sh 'make test'
    }
}

Throws the error : docker not found

enter image description here

2

2 Answers

1
votes

It seems like you have only installed plugins but not packages. Two possibilities.

  1. Configure plugins to install packages using Jenkins.

    • Go to Manage Jenkins
    • Global Tools Configuration
    • Docker -> Fill name (eg: Docker-latest)
    • Check on install automatically and then add installer (Download from here).enter image description here

    • Then save

  2. If you have installed on your machine then update the PATH variable in Jenkins with the location of Docker.

1
votes

You can define agent pod with containers with required tools(docker, Maven, Helm etc) in the pipeline for that:

First, create agentpod.yaml with following values:

apiVersion: v1

kind: Pod

metadata:

  labels:

    some-label: pod

spec:

  containers:

    - name: maven

      image: maven:3.3.9-jdk-8-alpine

      command:

        - cat

      tty: true

      volumeMounts:

        - name: m2

          mountPath: /root/.m2

    - name: docker

      image: docker:19.03

      command:

        - cat

      tty: true

      privileged: true

      volumeMounts:

        - name: dockersock

          mountPath: /var/run/docker.sock

  volumes:

    - name: dockersock

      hostPath:

        path: /var/run/docker.sock

    - name: m2

      hostPath:

        path: /root/.m2

Then configure the pipeline as:

pipeline {
    agent {
        kubernetes {
            defaultContainer 'jnlp'
            yamlFile 'agentpod.yaml'
        }
    }
    stages {
        stage('Build') {
            steps {
                container('maven') {
                    sh 'mvn package'
                }
            }
        }
        stage('Docker Build') {
            steps {
                container('docker') {
                    sh "docker build -t dockerimage ."
                }
            }
        }
    }
}