Как мне использовать флаг сборки --cache-from Докера в декларативном конвейере Jenkins?
Я использую декларативный Jenkinsfile для запуска некоторых этапов внутри контейнера Docker. Процесс работает нормально, но время сборки часто очень медленное, так как наш CI имеет довольно много подчиненных, и если сборка происходит на ведомом устройстве без кэша слоя, вся сборка занимает некоторое время.
Я читал, что Docker может ускорить сборку, если --cache-from
флаг указан. Как мне указать флаг кеша от и URL внешнего регистра и учетные данные?
pipeline {
agent { dockerfile true }
environment {
REPO = credentials('supersecret')
}
stages {
stage('Prepare environment') {
steps {
1 ответ
Синтаксис конвейера авторизует дополнительные параметры
Вы можете передать дополнительные аргументы
docker build ...
команда сadditionalBuildArgs
вариант, как агент
{ dockerfile { additionalBuildArgs '--build-arg foo=bar' } }
Но cache-from
ссылаются на изображение, которое может находиться в выделенном внешнем реестре с его собственными учетными данными.
Может быть, вы можете настроить первый шаг, просто отвечая за docker login
в этом реестре.
Другой подход полностью состоит в том, чтобы повторно использовать один и тот же узел для этой конкретной сборки.
См. " Повторное использование узла / рабочей области с отдельными агентами Docker "
pipeline {
agent {
label 'whatever'
}
stages {
stage('build') {
steps {
sh "./build-artifact.sh"
}
}
stage('test in docker') {
agent {
docker {
image 'ubuntu:16.04'
reuseNode true
}
}
steps {
sh "./run-tests-in-docker.sh"
}
}
}
}
Тогда любой docker build
выиграет от текущего локального кэша изображений.