Уже несколько часов бьюсь головой. Я только начал работать с Docker и собирал системы. У меня есть кодовая база PHP Codeception (модульное тестирование) в качестве примера репозитория. Локально я могу успешно выполнить тест, но когда я регистрирую свой код и он поступает в CI (Jenkins), клиентская программа может быть вызвана, но говорит, что тесты не найдены.
*нота Я знаю, что мои определения сборки могут использовать какую-то работу, моя цель — просто получить работающую сборку.
Dockerfile
FROM codeception/codeception
Makefile
APP_NAME=codeception
ROOT_DIR=${PWD}
WORK_DIR=app
docker_build:
docker build -t $(APP_NAME) .
run_test:
docker run --rm --name ception -w /$(WORK_DIR) -v $(ROOT_DIR):/$(WORK_DIR) $(APP_NAME) run acceptance
Просто для примера, это то, как он печатает в системе сборки
docker run --rm --name ception -w /app -v /var/jenkins_home/workspace/codeception:/app codeception run
Построить триггеры
make docker_build
make run_test
Локальный выход
OK (1 test, 0 assertions)
Выход Дженкинса
* заметка не подвела, но ..
no tests executed!
Установка Дженкинса
Host — это машинная капля Docker в цифровом океане, и я запустил контейнер Jenkins с объемным носком Docker, чтобы я мог вызывать Docker при триггерах сборки
ДРУГОЙ ВОПРОС
Учитывая вышеизложенные предварительные условия с командой:
*Обратите внимание pwd
docker run --rm --name ception -w /app -v /var/jenkins_home/workspace/codeception:/app codeception run; pwd
Выход Дженкинса:
/var/jenkins_home/workspace/codeception
Я ожидал, что это выведет /app
потому что мое понимание это вызывает pwd
изнутри док-контейнера, так что это должно было превзойти /app
каталог. Я сейчас в замешательстве
Журналы:
Started by GitHub push by edsk3o
Building in workspace /var/jenkins_home/workspace/codeception
> git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url https://github.com/edsk3o/codeception.git # timeout=10
Fetching upstream changes from https://github.com/edsk3o/codeception.git
> git --version # timeout=10
using GIT_ASKPASS to set credentials
> git fetch --tags --progress https://github.com/edsk3o/codeception.git +refs/heads/*:refs/remotes/origin/*
> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
> git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 1a7dd08ef1ed9e8e7b3f236c50690b65c65f37e8 (refs/remotes/origin/master)
> git config core.sparsecheckout # timeout=10
> git checkout -f 1a7dd08ef1ed9e8e7b3f236c50690b65c65f37e8
Commit message: "laksjd"> git rev-list --no-walk 528640c7be393aaa06f94edc80f12234a759efd6 # timeout=10
[codeception] $ /bin/sh -xe /tmp/jenkins9213645655529951332.sh
+ make docker_build
docker build -t codeception .
Sending build context to Docker daemon 3.408MB
Step 1/1 : FROM codeception/codeception
---> 1681da57f253
Successfully built 1681da57f253
Successfully tagged codeception:latest
+ make run_test
docker run --rm --name ception -w /app -v /var/jenkins_home/workspace/codeception:/app codeception run acceptance; pwd
Codeception PHP Testing Framework v2.3.8
Powered by PHPUnit 6.5.6 by Sebastian Bergmann and contributors.
[1mAcceptance Tests (0) [22m---------------------------------------
------------------------------------------------------------Time: 89 ms, Memory: 10.00MB
[30;43mNo tests executed![0m
/var/jenkins_home/workspace/codeception
Finished: SUCCESS
Задача ещё не решена.
Других решений пока нет …