Я надеюсь получить некоторую помощь о том, как правильно подойти к моей конструкции конвейера CI.Моя конечная цель - запустить этап на определенном удаленном узле.например.«Этап интеграции» должен выполняться на узле X, а все остальное может выполняться на главном узле.
Я настроил подчиненное устройство докера, используя образ jnlp-slave .Здесь все работает, как и ожидалось, в моем конвейере я могу указать узел, используя метку, и подчиненный образ JNLP будет работать на nodeX, как и планировалось.
Однако для запуска моих тестов есть много других библиотек./ Требуются зависимости, которых нет в образе JNLP.У нас уже есть изображение с нашей средой, и я хотел бы использовать это изображение, но я не уверен, как к нему подойти.
Пока что я нашел несколько возможных решений.
- Добавить все зависимости к образу JNLP (Это будет громоздко, и тогда мне придется управлять двумя изображениями)
- Добавить библиотеки JNLP к нашему изображению (Это загромождает наш рабочий образ, поэтомунет дела)
- Если у вас есть вложенный агент, образ ведомого 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?любая помощь приветствуется