Developers describe their projects in a YAML file. Project Configurator reads that file and creates or updates the corresponding resources on GitLab, Sentry, and Kubernetes -- namespaces, CI/CD settings, Jira integrations, pipeline schedules, Docker registry cleanup rules, and so on.
The idea is simple: instead of every developer clicking through three different UIs to set up a new service (and forgetting half the steps), they add a few lines of YAML and Project Configurator does the rest with sane defaults and the conventions your team agreed on.
[[TOC]]
Project Configurator was built at FRI:DAY, a German digital insurance company, to standardize how engineering teams create and manage their services. It ensures every project is set up with sane defaults and agreed-upon conventions, every time.
FRI:DAY agreed to open-source it when the company wound down. Whether it's useful to anyone else is an open question -- it was built for our specific stack and conventions. But if you run GitLab, Sentry, and Kubernetes and are tired of manually configuring the same things over and over, it might save you some time. At the very least, it might give you ideas for building your own.
The application outputs the JSON schema that validates its configuration via the sub-command jsonschema:
docker run --rm -it project-configurator jsonschema > project-configurator.schema.jsonIt is the one-and-only source of documentation for the configuration file's schema.
python main.py --helpAll program parameters can be passed in multiple ways:
- via the command line switches:
--some-param - via environment variables:
APP_<subcommand>_<name>, e.g.APP_SYNC_SOME_PARAM - For sensitive variables, if not given, the application will ask with a silent input.
- We ship
simple_sentry_clientbecause it is not registered on PyPi and installing packages from GitLab is always a hassle regarding availability and tool support.