В конвейере Jenkins, когда я использую withDockerContainer()
или docker.build(...).inside(...)
, рабочая область jenkins автоматически монтируется в контейнер в том же месте (например, если рабочая среда jenkins была / tmp / jenkins_ws / job_name, тогда точка монтирования этот путь будет добавлен в контейнер по тому же пути -v /tmp/jenkins_ws/job_name:/tmp/jenkins_ws/job_name -w /tmp/jenkins_ws/job_name
.
Я хочу переопределить путь, в котором рабочее пространство смонтировано внутри контейнера. Я делаю следующее docker.build(...).inside("-v $WORKSPACE:/tmp/ws -w /tmp/ws")
, однако, когда я заглядываю в консоль, я вижу, что контейнер создается следующим образом (при условии, что текущее рабочее пространство на этапе - / tmp / jenkins_ws / job_name @ 1
docker run -d -v /tmp/jenkins_ws/job_name@1:/tmp/ws -w /tmp/ws -e ******* -e ******* -v /tmp/jenkins_ws/job_name@1:/tmp/jenkins_ws/job_name@1 -w /tmp/jenkins_ws/job_name@1 IMAGE_NAME cat
Обратите внимание, что команда содержит аргументы, которые я передал в методе .inside()
, а затем плагин снова добавляет некоторые элементы.
Я хочу иметь возможность монтировать рабочее пространство в какое-то место контейнера, которое переопределяет место по умолчанию.
Для тех, кому интересно, зачем мне это делать, cmake генерирует только абсолютные пути в Make-файлах, поэтому я не могу переместить дерево сборки в другое место. Что я делаю здесь, так это то, что я создаю этап в контейнере и хочу тестировать биты в несколько этапов параллельно, но при этом гарантирую, что путь к рабочему пространству в контейнерах всегда один и тот же.