Это сводит меня с ума: я пытаюсь создать образ Docker из Dockerfile в определенной папке моего хранилища, используя сценарий Jenkins Pipeline, но он не получает правильный путь.
Этоэто строка в Jenkinsfile
:
def customImage = docker.build("km3pipe:${env.BUILD_ID}",
"-f ${dockerfile} ${DOCKER_FILES_DIR}")
Как вы можете видеть в Jenkinslog ниже, переменные правильно разрешены (я также дважды проверил рабочее пространство, все в порядке), но, кажется, игнорируетвторой аргумент .dockerfiles
:
[py365] + docker build -t km3pipe:13 -f py365 ./dockerfiles
[py365] unable to prepare context: unable to evaluate symlinks in Dockerfile path:
lstat /var/lib/jenkins/workspace/f-docker-image-names-for-ci-2DCL5RJ7AMH7K
IB6OCBTD57EC5DUGYZTQE5EQ6KGOSPXMUOVJP6Q/py365: no such file or directory
В соответствии с документацией (https://jenkins.io/doc/book/pipeline/docker/), это должно работать:
Можно передать другие аргументы в сборку докерадобавив их ко второму аргументу метода * 1016. * При передаче аргументов таким образом, последним значением в этой строке должен быть путь к файлу Docker.
В этом примере переопределяется значение по умолчанию Dockerfile
передав флаг -f:
node {
checkout scm
def dockerfile = 'Dockerfile.test'
def customImage = docker.build("my-image:${env.BUILD_ID}", "-f ${dockerfile} ./dockerfiles")
}
Строит my-image:${env.BUILD_ID}
из Dockerfile
, найденного в ./dockerfiles/Dockerfile.test
.