[WIP] Re-architect project configuration
Key components
Type | Project | Comment | Local Dev | Pipelines | Deployment | Hosting |
---|---|---|---|---|---|---|
Docker images | gitlab-drupal-ci/php-#.# |
x | x | |||
Docker image | l3d/run |
x | ||||
Docker image | l3d/setup |
x | ||||
Docker images | l3d/php-#.# |
Extends gitlab-drupal-ci | x | |||
Docker images | wodby/* |
Apache, PHP, MariaDB, etc. | x | x | x | |
Composer plugin | lakedrops/drupal-development-environment |
x | x | |||
Composer plugin | lakedrops/drupal-environment |
x | x | x | ||
GitLab Runner | x | x |
Configurations
Currently, the configuration happens in many different places:
- Environment variables
- some get defined dynamically by
l3d/run
when starting L3D for a project - then we read environment variables from user home:
~/.env
- finally we read environment variables from project root:
./.env
- some get defined dynamically by
- Project variables
- project specific variables are defined in
.lakedrops.yml
, they get committed the to git repository and they allow stage specific overwrites - user specific variables can be defined in
.lakedrops.user.yml
, they don't get committed but they can extend or overwrite project specific settings
- project specific variables are defined in
- GitLab CI variables
- in GitLab CI templates
- on the GitLab host: global / per group / per project
- in the project specific
.gitlab-ci.yml
file which is being committed to the git repository but has no stage specific configuration overwrite
Unfortunately, these are too many options. It's not difficult to get lost and the worst fact is, that a few variables need to be defined more than once and therefore produce redundant data, which is difficult to maintain.
Proposed improvements
Default values for ALL configuration options go into GitLab CI templates on the server.
Projects should be usable without changing any of the default values.
Overwriting configuration is supported in the following locations:
- GitLab host: global, group and project specific variables
- Project specific configuration:
{PROJECTROOT}/.lakedrops.yml
as part of the git repository and with stage specific overwrites - Developer specific configuration:
~/.lakedrops.yml
and{PROJECTROOT}/.lakedrops.user.yml
, all just local files
Other variables (.env
, ~/.env
and .gitlab-ci.yml
) are no longer recognized.