Integration Tests with Microservices (NodeJS), Jenkins and Docker

How would you typically configure Jenkins to build microservices (multiple NodeJS services, Rabbit, Mongo, etc), then test those services all together ?

Let’s say I’ve the following services:

  • Headless Chrome in Docker using Xvfb
  • Running lxd within docker container having probelms
  • Connect Docker Containers with remote debugger
  • Docker cloud repository push: access to the requested resource is not authorized on Fedora 23
  • Docker container isolation, does it care about underlying Linux OS?
  • Possible? How to setup VNC in a Google Managed VM Environment
    • RabbitMQ
    • Mongo
    • NodeJS Service 1
    • NodeJS Service 2

    Each of them has their own tests (unit and integration) and their Dockerfile.

    I want to configure Jenkins in a way that it would enable me to clone all theses services, run them all at the same time in different containers with Rabbit and Mongo containers along them. It would then run the tests for each of those services (they do generate TAP and coverage reports). Then take those reports for the TAP/Coverage Jenkins plugins. If it works out, commit the image and push it to the docker registry.

    I’ve been lying around Stack and Google and I don’t really see an easy way to get there that would not imply tons of bash.

    Maybe I see it in the wrong way, any input is more than welcome!

  • Docker Cache BUNDLE INSTALL not working
  • How to get all Docker containers even the ones who aren't running?
  • Docker Websocket Attaching in NodejS
  • How to create read-only user in the Docker Registry v2?
  • Not able to access shared data volume
  • Use docker in restricted internet environnement
  • One Solution collect form web for “Integration Tests with Microservices (NodeJS), Jenkins and Docker”

    You can test using an “consumer driven contract” approach.
    Like mentioned here:
    using this project:

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.