В настоящее время мне удалось настроить файл Jenkins для запуска моего PHP-анализа внутри контейнера. Вот его суть:
node {
stage "Prepare environment"
checkout scm
def environment = docker.build 'platforms-base'
environment.inside {
stage "Update Dependencies"
sh "composer install || true"
}
}
Когда это запускается, кажется, что репо извлечено на хост-машину, и этот каталог монтируется в контейнер докеров в каталоге /app
. (Я не нашел никакой конфигурации для этого, поэтому я не уверен, где это определено.)
В том же контейнере у меня установлен Magento2 в каталоге /var/magento2
. Мне нужно запустить несколько тестов в рамках кодовой базы Magento2. Это означает, что мне нужно извлечь текущую ветвь в конкретный каталог в контейнере в /var/magento2/vendor/myorg/mypackage/
, но извлеченное репо, похоже, находится в /app
.
Как оформить репо в определенном месте внутри контейнера?
1 ответ
/app
будет смонтирован внутри вашего контейнера, потому что вы (или используемый вами Dockerfile) монтируете текущий каталог как /app
.
Теперь ваш код уже отлично проверен Дженкинсом, поэтому я бы не стал делать отдельную дополнительную проверку внутри контейнера докеров. Дженкинс только что проверил для вас правильную ветку / мастер / тег с соответствующими учетными данными, поэтому нет необходимости делать это самостоятельно.
У вас есть три основных варианта:
Смонтировать текущий каталог не как
/app
, а как/var/magento2/vendor/myorg/mypackage/
Смонтируйте текущий каталог как
/app
, так и/var/magento2/vendor/myorg/mypackage/
. Возможно, вы даже могли бы сделать это с помощью дополнительной опции командной строки вместо изменения Dockerfile. (Это очень сильно зависит от вашей настройки разработки).Сделайте
/var/magento2/vendor/myorg/mypackage/
символической ссылкой на/app
, это, вероятно, тоже сработает.
Похожие вопросы
Новые вопросы
jenkins
Jenkins - это инструмент непрерывной интеграции с открытым исходным кодом, написанный на Java, который имеет пакеты для Linux, Mac OS X, Windows, FreeBSD и OpenBSD. Проект был раздвоен от Гудзона.