Мой конвейер Jenkins использует плагин docker-workflow
. Он создает изображение Docker и помечает его app
. Шаг сборки извлекает некоторые зависимости и вставляет их в изображение вместе с моим приложением.
Я хочу запустить две команды внутри контейнера на основе этого изображения. Команда должна быть выполнена во встроенной среде с доступом к зависимостям. Я попытался использовать Image.inside
, но, похоже, он не работает, потому что inside
монтирует каталог проекта поверх рабочего каталога (?) И поэтому зависимости недоступны.
docker.image("app").inside {
sh './run prepare-tests'
sh './run tests'
}
Я тоже пытался использовать docker.script.withDockerContainer
, но команды, похоже, не запускаются внутри контейнера. То же самое можно сказать и о Image.withRun
. По крайней мере, с этим я мог бы указать команду, но мне кажется, что мне нужно было запустить обе команды в одном выражении. Также кажется, что withRun
не завершится сборкой, если команда не завершится корректно .
docker
.image("app")
.withRun('', 'bash -c "./app prepare-tests && ./app tests"') { container ->
sh "exit \$(docker wait ${container.id})"
}
Есть ли способ использовать Image.inside
без монтирования каталога проекта? Или есть более элегантный способ сделать это?