Contributing | Tarantool





The workflow for Cartridge contributors is different from that for Cartridge users. It implies building the project from source (documentation, Web UI) and running tests.

  1. Fork and clone the repository.
  2. Build it and run it.
  3. Make a change, add tests, and make sure they still pass.
  4. Commit the changes and push them to your fork.
  5. Submit a pull request.

Here are a few things you can do that will increase the likelihood of your pull request being accepted:

  • Describe what you do in the pull request description, and why you do it.
  • Add an auto-test that covers your changes.
  • Keep your change as focused as possible. One scope – one pull request.
  • Write a good commit message.

See other related resources:

The fastest way to build the project is to skip building the Web UI:

CMAKE_DUMMY_WEBUI=true tarantoolctl rocks make

But if you want to build the frontend too, you’ll also need nodejs >= 12 and npm >= 6, see instructions here.

Documentation is generated from source code, but only if the ldoc and sphinx tools are installed:

pip install -r rst/requirements.txt
tarantoolctl rocks install ldoc --server=
tarantoolctl rocks make

There are several example entry points which are mostly used for testing, but can also be useful for demo purposes or experiments:

cartridge start
cartridge replicasets setup --bootstrap-vshard

# or select a specific entry point
# cartridge start --script ./test/entrypoint/srv_vshardless.lua

It can be accessed through the Web UI (http://localhost:8081) or via the binary protocol:

tarantoolctl connect admin@localhost:3301

# or via console socket
# tarantoolctl connect unix/:./tmp/run/cartridge.srv-1.control

If you also need the stateful failover mode, launch an external state provider – stateboard:

cartridge start --stateboard

And set failover parameters according to instances.yml. The defaults are:

  • State provider URI: localhost:4401;
  • Password: qwerty.

For more details about cartridge-cli, see its usage.

# Backend
tarantoolctl rocks install luacheck
tarantoolctl rocks install luatest 0.5.2
.rocks/bin/luacheck .
.rocks/bin/luatest -v

# Frontend
npm install cypress@6.2.0

# Collect coverage
tarantoolctl rocks install luacov
tarantoolctl rocks install luacov-console
.rocks/bin/luatest -v --coverage
.rocks/bin/luacov-console `pwd`
.rocks/bin/luacov-console -s

Find more about testing tools here:

If the GraphQL API is changed, the doc/schema.graphql should be updated:

npm install graphql-cli@3.0.14