Skip to content
trivago continuous integration executor
PHP Shell Batchfile
Branch: master
Clone or download
Latest commit a98b495 Jul 21, 2017
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin Pass checkout information into the test container (#42) Aug 21, 2016
docker Fix docker pull logging (#75) Jul 20, 2017
src Add debug option to run Jul 21, 2017
tests Add debug option to run Jul 21, 2017
.dockerignore Rearranged File Layout (#24) Jul 8, 2016
.editorconfig Initial commit Jun 8, 2016
.gitattributes Rearranged File Layout (#24) Jul 8, 2016
.gitignore Feature/handle no permissions to clone repository (#50) Oct 31, 2016
.php_cs Initial commit Jun 8, 2016
.rumi.yml Local tests execution (#26) Jun 30, 2016
.travis.yml Fix docker pull logging (#75) Jul 20, 2017 Update changelog Jul 21, 2017
Dockerfile Move deps to base docker image Feb 7, 2017
NOTICE Initial commit Jun 8, 2016 Update Nov 21, 2016
composer.json Update php dependencies Feb 7, 2017
composer.lock Update php dependencies Feb 7, 2017
phpmd.xml Adjust the description Nov 29, 2016
phpunit.xml.dist Update php dependencies Feb 7, 2017
rumi.bat Add config.json mount and docker pull to rumi executables (#46) Oct 19, 2016

Build Status


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.


    Install npm dependencies:

    Install composer dependencies:

    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-compose syntax
    commands: // optional
      - command one
      - command two
    entrypoint: sh // optional
    ci_image: name_of_the_container // optional
    timeout: 100 // in seconds, default 1200
  • docker (required): docker-compose syntax ( used to start a set of the containers. Can be either yaml definition or path to docker-compose definition file.
  • commands (optional, default: image defined command): if defined, the command will be triggered inside the container. If empty - default docker image command will be used.
  • entrypoint (optional, default: image defined entry point): equivalent to Docker entrypoint option.
  • ci_image (optional, default: first defined container): in case you don't want to use first defined container as your CI job, you can specify a name for the custom container here.

Job is marked as failed if return status of ci_image is other then zero.

Available environment variables

Rumi injects following environment variables on the test runtime to your test container:

  • GIT_COMMIT - contains current commit sha
  • GIT_BRANCH - contains current branch name
  • GIT_URL - contains url used to checkout the code


  1. 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.

  2. 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.

Sample configurations

// todo


How can i execute jobs locally?

It's experimental.

  1. Use below code to download and install rumi
  • linux/mac:
mv rumi /usr/local/bin/rumi
chmod +x /usr/local/bin/rumi
  • windows:

download and put it in your system PATH

  1. Run the rumi command in your project directory (where the .rumi.yml file is located).
You can’t perform that action at this time.