Contributing ############ General Contribution -------------------- For general rule regarding contribution to BiznetGio projects. See `BiznetGio Contributing Guide `_ Running the project locally --------------------------- Below is the description of each step needed to run the project locally. To try the command directly in order, see our playbook examples in ``docs/examples``. Cockroachdb ^^^^^^^^^^^ It's recommended to use the CockroachDB docker image instead of installing it locally. .. code-block:: yaml roach: hostname: roach image: cockroachdb/cockroach:v19.2.2 command: start --insecure --listen-addr=roach:26257 --advertise-addr=roach:26257 --http-addr=roach:8090 ports: - "26257:26257" - "8090:8090" volumes: - ./data/cockroach-data:/cockroach/cockroach-data:z .. code-block:: console $ # run the cockroach container above $ docker-compose up -d $ # create database. `10.0.0.1` is your host IP. docker run --rm cockroachdb/cockroach:v19.2.2 sql --host=10.0.0.1:26257 --insecure --execute "CREATE DATABASE IF NOT EXISTS knotdb;" $ # create table. get the `schema.sql` in `api/` $ cat schema.sql | docker run -i --rm cockroachdb/cockroach:v19.2.2 sql --host=10.0.0.1:26257 --insecure --database=knotdb This step will give you a running cockroach database, with ``knotdb`` as a name and a schema defined in ``schema.sql``. RESTKnot API ^^^^^^^^^^^^ Clone the project ``_ Go to the API directory .. code-block:: bash $ cd api/ $ # Install psycopg2 prerequisites $ sudo dnf install -y libpq-devel # Centos/Fedora/Cygwin/Babun $ sudo apt install -y libpq-dev # Debian/Ubuntu $ # Install confluent-kafka prerequisites $ sudo dnf install -y librdkafka-devel python3-devel # Centos/Fedora/Cygwin/Babun $ sudo apt install -y librdkafka-dev python3-dev # Debian/Ubuntu $ # Create the virtualenv, then install the dependencies $ poetry shell && poetry install After making changes, you can the ``restknot-api`` using plain ``flask run``. Or running it via docker. If you prefer to run without docker, you need to export the environment variables manually. See ``api/docker-compose.example.yml`` to learn all available variables. Using docker, it would be: .. code-block:: console $ # build the image $ docker build -f Dockerfile -t restknot-api:0.7.8 --build-arg BUILD_VERSION=$(git log -1 --format=%h) . $ # run the image $ docker-compose up -d Ensure the app is running by checking the ``/api/health`` endpoint. Broker ^^^^^^ For RESTKnot API to communicate with RESTKnot Agent, they need a broker. We use `Kafka` for the broker. See ``docs/example`` to run Zookeeper and Kafka. The examples contain configuration to run multiple Kafka with single Zookeeper or multiple Kafka with multiple Zookeeper. RESTKnot Agent ^^^^^^^^^^^^^^ To build the agent: .. code-block:: console $ cd agent/ $ # build the image $ docker build -f Dockerfile -t restknot-agent:0.7.8 --build-arg BUILD_VERSION=$(git log -1 --format=%h) . $ # run the image $ docker-compose up -d Set appropriate configurations. Take a look at ``agent/docker-compose.example.yml``. Basic Workflow -------------- To test that all component works together, or to get an insight into how knot works. See :ref:`howto:Basic Workflow` Releasing --------- To create a release. Run the following steps. - Run linting ``just check``. To check if the codebase adheres to the rules. - Update the CHANGELOG. - Update version numbers using ``./scripts/bump_version ``. - Create a commit with a message format: `v[0-9]+.[0-9]+.[0-9]+`, and push it to a feature branch (as a pull request). - Wait for a check to pass, merge the specified pull request to the master branch. - Wait for a check to pass, create a release tag from GitHub UI, then copy the appropriate CHANGELOG to the release page.