Проблема с контейнерами с плагином Jenkins для Kubernetes - PullRequest
0 голосов
/ 02 апреля 2020

Я использую плагин kubernetes в jenkins. Я пытаюсь использовать его для работы с Pipeline и Freestyle. Задания выполняются, но только в контейнере с именем jnlp-slave:3.35-5-alpine, который я нигде не определил.

Даже если не определить изображение в конвейере, ничего не происходит и все еще выполняется в этом jnlp-slave:3.35-5-alpine изображении. Вот пример моего конвейера:

pipeline {
    agent none
    stages {
        stage ('Stage as dsl') {
            agent {
                kubernetes {
                    cloud 'kubernetes'
                    label 'jnlp-slave'
                    containerTemplate {
                        name 'jnlp-slave'
                        image 'jnlp-slave'
                    }
                }
            }
            steps {
                sh '''
                    pwd; \
                    whoami; \
                    uname -a
                '''
            }
        }
    }
}

Где моя ошибка?

1 Ответ

0 голосов
/ 03 апреля 2020

Решение, которое я нахожу, состоит в том, чтобы НЕ определить любую метку для кластера.

В моем примере jenkinsfile, который я тестирую, для использования изображений diffrend docker вот так:

Рабочий раствор

def podTemplate = """
apiVersion: v1
kind: Pod
spec:
  containers:
  - name: java-slave
    image: myrepo/java-slave:latest
    command:
    - sleep
    args:
    - infinity
  - name: jenkins-slave-dind
    image: myrepo/jenkins-slave-dind:latest
    command:
    - sleep
    args:
    - infinity
    volumeMounts:
    - name: dockersock
      mountPath: /var/run/docker.sock
  volumes:
  - name: dockersock
    hostPath:
      path: /var/run/docker.sock
"""
pipeline {
    agent {
        kubernetes {
            yaml podTemplate
            defaultContainer 'java-slave'
        }
    }
    stages {
        stage('Main') {
            steps {
                sh 'curl google.com'
            }
        }
        stage ('Stage as dsl 4'){
            steps {
                container('jenkins-slave-dind') {
                    sh '''
                        docker ps -a
                    '''
                }
            }
        }
    }
}
...