2017-01-05 9 views
1

У меня есть изображение докера, созданное для теста mongodb. Вы можете найти от zhaoyi0113/mongo-uat. Когда вы запускаете контейнер-докер с этого изображения, он создаст несколько экземпляров mongodb, для запуска которых потребуется несколько минут. Теперь я хочу запустить свои тестовые примеры интеграции внутри этого контейнера с помощью drone CI. Ниже мой .drone.yml файл:Как выполнить интеграционный тест внутри контейнера докера в беспилотном конвейере

pipeline: 
    build: 
    image: node:latest 
    commands: 
     - npm install 
     - npm test 
     - npm run eslint 
    integration: 
    image: zhaoyi0113/mongo-uat 
    commands: 
     - npm install 
     - npm run integration 

Есть два шага в этом трубопроводе, первый для запуска модульного тестирования в nodejs проекта. Второй вариант integration используется для запуска тестовых примеров интеграции в изображении докеры mongodb.

при запуске drone exec обнаружиется failed to connect to mongo instance. Я думаю, что для экземпляра mongodb требуется несколько минут для запуска. Команды npm install и npm run integration должны запускаться после запуска экземпляра mongodb. Как я могу отложить команды сборки?

EDIT1

Изображение zhaoyi0113/mongo-uat имеет MongoDB среду. Это создаст несколько экземпляров mongodb. Я могу запустить эту команду docker run -d zhaoyi0113/mongo-uat, чтобы запустить этот контейнер, после чего я могу подключиться к этому контейнеру, чтобы увидеть экземпляры mongodb. Я не уверен, как дрон запустил контейнер докеров.

+0

Это полный пример YAML? Где запускается изображение докер-монгодба? вы посмотрели http://readme.drone.io/usage/services-guide/? –

+0

Да, это полный файл yaml. Доккер mongodb построен на этом изображении 'zhaoyi0113/mongo-uat'. –

+0

услуги, такие как mongodb, должны быть объявлены в разделе услуг. Для примера см. Http://readme.drone.io/usage/services-guide. Не считается лучшей практикой запуска услуг в трубопроводе. –

ответ

3

Рекомендуемый подход к тестированию интеграции заключается в размещении ваших контейнеров службы в разделе службы YAML [1] [2]

Поэтому для того, чтобы запустить службу контейнер Монго я создал бы ниже YAML файл. Служба Mongo начнет работать с портом по умолчанию в 127.0.0.1 и будет доступна из ваших контейнеров конвейера.

pipeline: 
    test: 
    image: node 
    commands: 
     - npm install 
     - npm run test 
    integration: 
    image: node 
    commands: 
     - npm run integration 

services: 
    mongo: 
    image: mongo:3.0 

Это рекомендуемый подход для тестирования таких сервисов, как MySQL, Postgres, Mongo и многое другое.

[1] http://readme.drone.io/usage/getting-started/#services
[2] http://readme.drone.io/usage/services-guide/

 Смежные вопросы

  • Нет связанных вопросов^_^