trivago continuous integration executor
rumi is a container based job execution platform. It reads and executes
jobs that are defined in a .rumi.yml
file in a project. The goal is it
to make job execution more flexible and put the responsibility for
configuration in projects into the maintainer’s hands.
CI jobs are grouped into stages which are executed sequentially. The jobs
in each stage are executed in parallel. A failed job aborts the complete
build.
stages:
Initialisation:
Install npm dependencies:
...
Install composer dependencies:
...
Tests:
Unit tests:
...
Integration tests:
...
CSS lint:
...
The above example illustrates how jobs can be grouped into stages. “Install npm dependencies” and “Install composer dependencies” are executed at the same time. Once all jobs in the given stage are finished, the next stage is started.
You can define an unlimited amount of stages and jobs. You should try to make stage and job names self-explanatory.
...
Job name:
docker:
// docker-compose syntax
commands: // optional
- command one
- command two
entrypoint: sh // optional
ci_image: name_of_the_container // optional
timeout: 100 // in seconds, default 1200
yaml
definition or path to docker-compose
definition file.Job is marked as failed if return status of ci_image is other then zero.
Rumi injects following environment variables on the test runtime to your test container:
Port configuration in the yml
definition is discarded. CI jobs are not able to expose ports. This is likely to change in the later versions. In case you need communication between your containers link Docker containers with each other.
build
flag from docker-compose syntax is not supported. You need to pre-build your image, push it to registry and use it with image
flag.
// todo
It’s experimental.
wget https://raw.githubusercontent.com/trivago/rumi/master/rumi
mv rumi /usr/local/bin/rumi
chmod +x /usr/local/bin/rumi
download https://raw.githubusercontent.com/trivago/rumi/master/rumi.bat
and put it in your system PATH
rumi
command in your project directory (where the .rumi.yml
file is located).