Skip to content

Latest commit

 

History

History
135 lines (102 loc) · 4.12 KB

CONTRIBUTING.md

File metadata and controls

135 lines (102 loc) · 4.12 KB

Developing Temporal

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.

Installing prerequisites

Build prerequisites

  • Go Lang (minimum version required is 1.14):
    • Install on OS X with brew install go.
    • Install on Ubuntu with sudo apt install golang.
  • Protocol bufffers compiler:
    • Install on OS X with brew install protobuf.
    • Install on Ubuntu with sudo apt install protobuf-compiler.

Runtime (server and tests) prerequisites

Developing on Windows

For developing on Windows, install Windows Subsystem for Linux 2 (WSL2) and Ubuntu. After that, follow the guidance for installing prerequisites, building, and testing on Ubuntu.

Checking out the code

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

Building

For the very first time build temporal-server and helper tools with simple make command:

$ make

It will install all other build dependencies and build the binaries.

Futher you can build binaries without running tests with:

$ make bins

Please check the top of our Makefile for other useful build targets.

Testing

Tests require runtime dependencies. They can be run with start-dependencies target (uses docker-compose internally). Open new terminal window and run:

$ make start-dependencies

make stop-dependencies will bring docker-compose down.

Before testing on MacOS, make sure you increase the file handle limit:

$ ulimit -n 8192

Run unit tests:

$ make unit-test

Run all integration tests:

$ make integration-test

Or run all the tests at once:

$ make test

You 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 TestPersistenceStartWorkflow

When you are done, don't forget to stop docker-compose (with Ctrl+C) and clean up all dependencies:

$ docker-compose down

Runing server locally

First start runtime dependencies. They can be run with start-dependencies target (uses docker-compose internally). Open new terminal window and run:

$ make start-dependencies

then create database schema:

$ make install-schema

and then run the server:

$ make start

Now you can create default namespace with tctl:

$ make tctl
$ ./tctl --ns default namespace register

and run samples from Go and Java samples repos. Also you can access web UI at localhost:8088.

When you are done, press Ctrl+C to stop the server. Don't forget to stop dependencies (with Ctrl+C) and clean up resources:

$ make stop-dependencies

Licence headers

This 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 copyright

Commit Messages And Titles of Pull Requests

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