Nitay
Nitay

Reputation: 4720

Gitlab CI with docker+machine - Using multiple containers to test app

I'm using Gitlab CI, configured with a docker+machine executor, to build and test my app on spot instances.

My main app requires a few microservices to be available on production as well as in the test step. All of these microservices are built and tested in the same Gitlab CI server (each in his own pipeline). The output of all microservices are docker images that are pushed to the Gitlab Docker Registry.

The test step I'm trying to build:

  1. Provision a spot instance (if there's no idle one), installed with the microservice docker
  2. Test step

    2.1. Provision a spot instance (if there's no idle one), installed with app docker
    2.2. Testing script
    2.3. Stop the app container, release the spot instance

  3. Stops the microservice container, release the spot instance

I've got 2.1, 2.2, 2.3 to work by following the instructions here, but I'm not sure how to achieve the rest. I can run docker-machine explicitly in the yaml, but I'd like to use gitlab's docker+machine executor as it's configured with the credentials, limitations, offpeak settings, etc.

Is this possible to with gitlab's executor? How?

What's the "correct" way to go about doing something like this? I'm sure I'm not the first one testing with microservices but I couldn't find any info of how to do so.

Upvotes: 1

Views: 494

Answers (1)

bytesnz
bytesnz

Reputation: 417

You are probably looking for the CI Services functionality. They have a couple of examples of how to use a service (MySQL, PostgreSQL, Redis) or if you were using another docker image, the docker service will have the same hostname as the docker image name (eg, tutum/wordpress will have a dns hostname of tutum-wordpress and tutum__wordpress, for more info, refer to the details about hostnames).

There are also details about running the postgres in the shell executor if you were so inclined and there is a presentation on Testing things with Gitlab CI and docker.

Upvotes: 1

Related Questions