Skip to content

[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
  • 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
  • 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.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information