Skip to content

Latest commit

 

History

History
72 lines (46 loc) · 3.53 KB

development-guidelines.md

File metadata and controls

72 lines (46 loc) · 3.53 KB

Development Guidelines

Here you can find the standards agreed for development within the project.

Versioning

The version numbers used within all repositories is based on semantic versioning.

Each repository evolves its version number independent of other repositories within the project. In particular the version number for the server is not explicitly aligned with the version number of the web client.

Process

The development process in use is largely based on the default process suggested by Zenhub.

Branches

The branching strategy used by the project is largely as describined in this article, with the caveat that master is now called main in light of recent updates to Github naming standards.

As such the two primary branches in each repository are:

  • main: for stable releases
  • develop: for active development

In addition feature branches are used for issues and that are then merged into develop.

The convention for naming of feature branches is that they should take the name of the issue being worked on in the branch e.g. "coordination#100".

In general there should be one issue per feature branch.

Shared Environments

In addition the following environments are used for the release management of the platform:

  • dev: for the continual deployment from the develop branch, from Server and client repos.
  • test: for carrying out performance / load testing, or just simply having an environment whereby particular issues can be reviewed
  • sandbox: a production like environment where the capabilities fo the platform can be evaluated
  • acc: for verification of new builds before they are deployed to production environments. It matches as far as possible the production setup
  • prod: the production open innovation space.

The dev environment exposes the following end points:

Similar end points are exposed for all other environments.

Development Environment

Development takes place primarily on local machines.

The default developer IDE is VS Code, and repos may include configuration for that IDE that make sense to be shared (debug setups etc).

Builds

There are currently CI and Nightly builds on the develop branches of the following repositories:

Docker Images + Image Registries

Docker is used to containerize the results from each repository.

DockerHub is used as the primary registry for public images. New Images are pushing automatically to DockerHub upon tagged releases in the repos.

The currently supported repos on dockerhub are:

  • alkemio/server
  • alkemio/client-web

The Demo repo has a docker-composed application that takes the latest image from both of these repos and creates a simple running demonstrator.

It is likely that there is later a separate repository location added for more development oriented images.

Tags

All docker images should have a version number tag assigned.

The latest tag is reserved for the latest image generated from the main branches.

Kubernetes & Terraform

The deployment environment is based on Kubernetes, generated via Terraform.