This doc is for contributors to Temporal server (hopefully that's you!)
Note: All contributors also need to fill out the Temporal Contributor License Agreement before we can merge in any of your changes.
- Go Lang (minimum version required is 1.14):
- Install on OS X with
brew install go. - Install on Ubuntu with
sudo apt install golang.
- Install on OS X with
- Protocol bufffers compiler:
- Install on OS X with
brew install protobuf. - Install on Ubuntu with
sudo apt install protobuf-compiler.
- Install on OS X with
Temporal uses go modules, there is no dependency on $GOPATH variable. Clone the repo into the preffered location:
$ git clone https://github.com/temporalio/temporal.gitFor the very first time build temporal-server and helper tools with simple make command:
$ makeIt will install all other build dependencies and build the binaries.
Futher you can build binaries without running tests with:
$ make binsPlease check the top of our Makefile for other useful build targets.
Tests require runtime dependencies. You can run them with docker-compose. Open new terminal window and run:
$ cd docker/dependencies
$ docker-compose upRun unit tests:
$ make unit-testRun all integration tests:
$ make integration-testOr run all the tests at once:
$ make testYou can also run a single test:
$ go test -v <path> -run <TestSuite> -testify.m <TestSpecificTaskName>for example:
$ go test -v github.com/temporalio/temporal/common/persistence -run TestCassandraPersistenceSuite -testify.m TestPersistenceStartWorkflowWhen you are done, don't forget to stop docker-compose (with Ctrl+C) and clean up all dependencies:
$ docker-compose downFirst start runtime dependencies using docker-compose. Open new terminal window and run:
$ cd docker/dependencies
$ docker-compose upthen create database schema:
$ make install-schemaand then run the server:
$ make startWhen you are done, press Ctrl+C to stop ther server. Also, don't forget to stop docker-compose (with Ctrl+C) and clean up all dependencies:
$ docker-compose downThis project is Open Source Software, and requires a header at the beginning of all source files. To verify that all files contain the header execute:
$ make copyrightOvercommit adds some requirements to your commit messages. At Temporal, we follow the Chris Beams guide to writing git commit messages. Read it, follow it, learn it, love it.
All commit messages are from the titles of your pull requests. So make sure follow the rules when titling them. Please don't use very generic titles like "bug fixes".
All PR titles should start with Upper case.