Плагин Jenkins Kubernetes: как создать образ из Dockerfile и выполнить шаги внутри образа - PullRequest
0 голосов
/ 19 февраля 2019

Я использую Jenkins kubernetes-plugin .Можно ли построить образ Docker из Dockerfile и затем выполнить шаги внутри созданного образа?Плагин требует указать изображение в шаблоне pod, поэтому моей первой попыткой было использовать docker-in-docker, но шаг docker.image('jenkins/jnlp-slave').inside() {..} завершился неудачно:

pipeline {
  agent {
    kubernetes {
      //cloud 'kubernetes'
      label 'mypod'
      yaml """
apiVersion: v1
kind: Pod
spec:
  containers:
  - name: docker
    image: docker:1.11
    command: ['cat']
    tty: true
    volumeMounts:
    - name: dockersock
      mountPath: /var/run/docker.sock
  volumes:
  - name: dockersock
    hostPath:
      path: /var/run/docker.sock
"""
    }
  }
  stages {
    stage('Build Docker image') {
      steps {
        git 'https://github.com/jenkinsci/docker-jnlp-slave.git'
        container('docker') {
          sh "docker build -t jenkins/jnlp-slave ."
          docker.image('jenkins/jnlp-slave').inside() {
            sh "whoami"
          }
        }
      }
    }
  }
}

Не удалось выполнить с:

WorkflowScript: 31: Expected a symbol @ line 31, column 11.
             docker.image('jenkins/jnlp-slave').inside() {

1 Ответ

0 голосов
/ 19 февраля 2019

Как отметил Мэтт в комментариях, это работает:

pipeline {
  agent {
    kubernetes {
      //cloud 'kubernetes'
      label 'mypod'
      yaml """
apiVersion: v1
kind: Pod
spec:
  containers:
  - name: docker
    image: docker:1.11
    command: ['cat']
    tty: true
    volumeMounts:
    - name: dockersock
      mountPath: /var/run/docker.sock
  volumes:
  - name: dockersock
    hostPath:
      path: /var/run/docker.sock
"""
    }
  }
  stages {
    stage('Build Docker image') {
      steps {
        git 'https://github.com/jenkinsci/docker-jnlp-slave.git'
        container('docker') {
          script {
            def image = docker.build('jenkins/jnlp-slave')
            image.inside() {
              sh "whoami"
            }
          }
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...