This repository contains multiple projects. They are kept together to simplify the dependency management. The following sections provide guidance in order to harmonize them.
Each project should contain the following elements:
-
README.md: Introduction to the project for end users. It should describe how to configure and start it. -
DEVELOPER.md: Introduction for developers. It includes development notes and references to design considerations. -
Makefileincluding the following rules: -
If applicable, design documentation may be captured in a
DESIGN.mdor adesigndirectory.
The binaries in cmds/ (core-service, db-manager migrate, db-manager evict, ...) are part of the deployments.
When adding, renaming or removing a flag or command, the change usually has to be propagated to the locations below:
-
Command documentation: the flag reference and usage notes in
docs/, e.g.docs/operations/cleanup.mdforevict. -
Helm chart (
deploy/services/helm-charts/dss):values.yamlvalues.schema.jsontemplates/*.yaml
-
Tanka (
deploy/services/tanka):metadata_base.libsonnet- The component's
.libsonnet(e.g.evict.libsonnet) examples/*/main.jsonnet
-
Terraform (
deploy/infrastructure):utils/definitions/<variable>.tfutils/variables.py- Run
utils/generate_terraform_variables.shto regenerate thevariables.gen.tfandTFVARS.gen.mdfiles. modules/terraform-*-dss/main.tfdependencies/terraform-commons-dss/helm.tfdependencies/terraform-commons-dss/tanka.tf
-
Local development and tests:
build/dev/docker-compose_dss.yamlandbuild/dev/startup, if the flag is needed to run locally.- Test helpers e.g. in
test/evict/evict_helper.py, with a test case.
Continuous integration shall be configured to run the following targets when applicable:
lintbuildtesttest-e2e