Запуск пользовательских образов с подчиненным Jenkins (Docker в качестве облачного провайдера) - PullRequest
0 голосов
/ 14 марта 2019

Я надеюсь получить некоторую помощь о том, как правильно подойти к моей конструкции конвейера CI.Моя конечная цель - запустить этап на определенном удаленном узле.например.«Этап интеграции» должен выполняться на узле X, а все остальное может выполняться на главном узле.

Я настроил подчиненное устройство докера, используя образ jnlp-slave .Здесь все работает, как и ожидалось, в моем конвейере я могу указать узел, используя метку, и подчиненный образ JNLP будет работать на nodeX, как и планировалось.

Однако для запуска моих тестов есть много других библиотек./ Требуются зависимости, которых нет в образе JNLP.У нас уже есть изображение с нашей средой, и я хотел бы использовать это изображение, но я не уверен, как к нему подойти.

Пока что я нашел несколько возможных решений.

  1. Добавить все зависимости к образу JNLP (Это будет громоздко, и тогда мне придется управлять двумя изображениями)
  2. Добавить библиотеки JNLP к нашему изображению (Это загромождает наш рабочий образ, поэтомунет дела)
  3. Если у вас есть вложенный агент, образ ведомого JNLP будет раскручивать наше изображение для проведения тестирования.

Я пробовал подход 3

мой конвейер выглядит следующим образом

pipeline {
  agent { 
  node { label 'nodeX' } } 
  stages {
    stage('Test') {
        agent {
            docker {
                image 'company/image:tag'
                registryUrl 'https://registry.hub.docker.com/company/img'
                registryCredentialsId 'dockerhub-credentials'
                reuseNode true
            } 
        } 
        steps {
            echo 'Hello, from our image'
            sh 'whoami'
        }
    }
  }
}

Чтобы это заработало, мне пришлось установить докер и сопоставить докерный носок с образом JNLP, но я столкнулся со стеной с учетными данными докера.

вызов registryCredentialsId 'dockerhub-credentials' не работает, поскольку учетные данные не передаются.

Правильно ли я здесь использую jenkins?любая помощь приветствуется

...