Change Log

UNRELEASED x.y.z (yyyy-mm-dd)

All Commits

Version 0.5.0 (2020-05-21)

All Commits

Upgrade Notes:

If PHP_VERSION is not defined in a project’s .env type the default version is now 7.3 across the board for all environment types. This should not pose any issues for recent magento1 or magento2 setups, but laravel environments will likely require an update to the project’s .env to continue using PHP 7.2 or rather than 7.3 for local development.

There is a breaking change where custom environment config specific to Linux has been used in the form of placing a .warden/warden-env.linux-gnu.yml file in the project directory. The value used for WARDEN_ENV_SUBT on Linux is now linux rather than linux-gnu. After upgrading, these files will need to be re-named from .warden/warden-env.linux-gnu.yml to .warden/warden-env.linux.yml. Where continued compatibility with prior versions of Warden is desired (for example, to not require the entire team to upgrade Warden at once), a symlink may be placed to point the old file name to the new one allowing Warden to load the definition correctly on both new and old implementations: warden-env.linux-gnu.yml -> warden-env.linux.yml

The BYPASS_VARNISH flag will continue to work as before but has been deprecated to be removed in a future release. It will no longer be included in the .env file created for new magento2 environments.Please use the new feature toggle WARDEN_VARNISH=0 to disable Varnish instead.

Enhancements:

  • Added symfony environment type for use with Symfony 4+ (#146 by @lbajsarowicz)
  • Added COMPOSER_MEMORY_LIMIT=-1 to env on all php-* containers (#154 by @navarr)
  • Added new feature flag WARDEN_DB to enable/disable service on per-project basis.
  • Added new feature flag WARDEN_ELASTICSEARCH to enable/disable service on per-project basis.
  • Added new feature flag WARDEN_VARNISH to enable/disable service on per-project basis.
  • Added new feature flag WARDEN_RABBITMQ to enable/disable service on per-project basis.
  • Added new feature flag WARDEN_REDIS to enable/disable service on per-project basis.
  • Added new feature flag WARDEN_MAILHOG to enable/disable service on per-project basis.
  • Updated WARDEN_ALLURE to now enable Allure container on any environment type.
  • Updated WARDEN_SELENIUM to now enable Selenium containers on any environment type.
  • Updated WARDEN_BLACKFIRE to now enable Blackfire containers on any environment type.
  • Updated env-init command to include locked values for MARIADB_VERSION, NODE_VERSION, PHP_VERSION, and REDIS_VERSION for laravel environment types.
  • Updated local env type so it can now include common services by adding the above feature flags to the project .env file.

Version 0.4.4 (2020-05-14)

All Commits

Enhancements:

  • Updated php-fpm images to use fpm-loaders variant of base image to include IonCube & SourceGuardian from upstream images
  • Updated php-fpm images fix for directory ownership of mounted volume paths for future flexibility by moving it to the docker-entrypoint script with an env var CHOWN_DIR_LIST to specify what directories to chown on container startup

Bug Fixes:

  • Fixed missing SSH agent forwarding in php-blackfire container
  • Fixed lack of extra_hosts in php-blackfire and blackfire-agent containers (issue #145)
  • Fixed missing extra_hosts line for non-subdomain entry in /etc/hosts on selenium container
  • Fixed $OSTYPE check for compatibility with OpenSUSE which uses linux rather than linux-gnu (#149 by @Den4ik)

Version 0.4.3 (2020-05-02)

All Commits

Enhancements:

  • Updated init routine allowing WARDEN_HOME_DIR and WARDEN_COMPOSER_DIR to be overriden via environment variables
  • Updated environment configuration to reference WARDEN_SSL_DIR eliminating hard-coded ~/.warden/ssl references
  • Updated warden global docker config to reference WARDEN_HOME_DIR eliminating hard-coded ~/.warden references
  • Updated warden up to return an error when docker is not running rather than blindly attempt to start global services

Version 0.4.2 (2020-04-15)

All Commits

Enhancements:

  • Added WARDEN_SYNC_IGNORE to support passing a comma-separated list of additional per-session-ignores to Mutagen when sync sessions are started (#142 by @davidalger)
  • Added pause, resume and monitor to warden sync command (#141 by @fooman)
  • Changed Mutagen sync to pause on warden env stop and resume on warden env up -d (#141 by @fooman)

Bug Fixes:

  • Removed exclusion of (commonly large) files types (*.sql, *.gz, *.zip, *.bz2) from sync sessions (as introduced in 0.4.0) because it broke the ability to use artifact repositories with composer (#142 by @davidalger)

Version 0.4.1 (2020-04-11)

All Commits

Bug Fixes:

  • Removed tmpfs volumes from sub-directories of /var/www/html when WARDEN_TEST_DB=1 was set due to compatibility issues (#139 by @lbajsarowicz)

Version 0.4.0 (2020-04-02)

All Commits

Upgrade Notes:

The introduction of SSH Agent Forwarding support in PR #121 results in Warden now requiring Docker Desktop 2.2.0.0 or later for macOS clients. Please upgrade Docker Desktop prior to upgrading to the latest Warden release to avoid errors relating to unauthorized mounts.

Enhancements:

  • Added MySQL 5.6 and 5.7 images to Quay repository for use with Warden environments
  • Added support for Integration, Unit and API Tests leveraging a MySQL 5.7 container running on tempfs memory disk (#115 by @lbajsarowicz)
  • Added WARDEN_ALLURE setting to control Allure separately from Selenium for use reporting on Integration and Unit tests (#117 by @lbajsarowicz)
  • Added ssh agent forwarding support on both macOS and Linux hosts (#121 by @davidalger)
  • Updated entrypoint in php-fpm images to support mounting PEM files into /etc/pki/ca-trust/source/anchors (3a841b7d)
  • Updated config for Mutagen sync to exclude large files (*.sql, *.gz, *.zip, *.bz2) from sync sessions

Bug Fixes:

  • Fixed issue where - in WARDEN_ENV_NAME would results in 0.0.0.0 being used in extra_hosts passed to containers
  • Fixed race condition caused by docker-compose starting two containers with identical mounts simultaneously (issue #110)
  • Fixed issue with incorrect network name reference when uppercase characters are present in WARDEN_ENV_NAME (issue #127)
  • Fixed issue where Mutagen sync autostart would attempt to start when php-fpm container was not running (ex: when executing warden env up -d db to start only the db service)

Version 0.3.1 (2020-03-06)

All Commits

Upgrade Notes:

If you’re upgrading from version 0.2.x to 0.3.x for the first time, please reference upgrade notes for Warden 0.3.0 and plan accordingly.

Bug Fixes:

  • Fixed issue where env up and env start would exit with an error on env types not using Mutagen sessions
  • Fixed issue where env down and env stop would exit with an error on env types not using Mutagen sessions

Version 0.3.0 (2020-03-06)

All Commits

Upgrade Notes:

The fix for issue #65 required removing the warden network from each environment’s services (see commit 36cb0174) and as a result environments referencing the warden network in per-project .warden/*.yml configuration files may need to be updated for compatibility with Warden 0.3.0.

Should you see an error like the following when running warden env ... then this applies to you:

ERROR: Service "nginx" uses an undefined network "warden"

To resolve this issue, simply remove the following from each service defined in .warden/*.yml files on the project similar to what was done in commit 36cb0174 on the base environment definitions:

networks:
  - warden
  - default

Bug Fixes:

  • Updated to no longer connect environment containers to warden network and instead peer traefik and tunnel containers with each project when it is started (issue #65)

Enhancements:

  • Added automatic start of Mutagen sync on env up and env start when sync is not connected (issue #90)
  • Added automatic stop of Mutagen sync on env down and env stop (issue #90)
  • Updated routing rules so Traefik will now by default route both example.com and *.example.com to application (#111 by davidalger)

Version 0.2.4 (2020-02-29)

All Commits

Bug Fixes:

  • Updated environment path (WARDEN_ENV_PATH in scripts) to use physical vs logical current working directory to resolve issues with using symlinked file paths (issue #101)
  • Removed confusingly quoted placeholder values related to Blackfire from env file generated by env-init
  • Removed timeout for Selenium Hub, increased timeout for MFTF’s command.php endpoint to 10 minutes (#107 by lbajsarowicz)
  • Fixed issue where warden sync start would infinitely wait when Mutagen encountered an error (#100 by Lunaetic)

Version 0.2.3 (2020-02-14)

All Commits

Bug Fixes:

Enhancements:

  • Added explicit_defaults_for_timestamp=on to db settings on magento2 environment allowing setup:db:status to report clean (2.3.4 and later) (issue #89)

Version 0.2.2 (2020-02-09)

All Commits

Enhancements:

  • Updated sign-certificates command to specify “O” value and “extendedKeyUsage” to comply with stricter SSL guidelines (issue #85)

Bug Fixes:

  • Fixed missing CN value on CA used to sign SSL certificates (issue #85)

Version 0.2.1 (2020-01-30)

All Commits

Upgrade Notes:

If you’re upgrading from version 0.1.x to 0.2.x for the first time, please reference upgrade notes for Warden 0.2.0 and plan accordingly.

Enhancements:

  • Added support for using ~/.warden/.env to configure aspects of Global Services (see docs for details) (issue #13)
  • Updated sync start to no longer call mutagen daemon start as Mutagen now does this automatically.
  • Updated warden install to include short hostname in the common name used when signing the Root CA used by Warden allowing easier identification and interoperability when a single user is running Warden across multiple workstations.

Version 0.2.0 (2020-01-27)

All Commits

Upgrade Notes:

As mentioned below this release of Warden brings with it an update to Traefik 2.1. The v2 line of Traefik completely overhauled the labelling system used to define routes. It also opens the door to new possibilities. All labeling on built-in environment configurations has been updated for compatibility with new versions of Traefik. However, this is a breaking change in the two following scenarios:

  • The local environment type is being used. When local env type is used, all config is contained in the project’s .warden/ directory and routes setup via labels on the custom containers will naturally need to be updated.
  • Projects using custom labels applied via override files such as .warden/warden-env.yml may need to be updated.

Please reference the updated base environment definitions for examples of how to update the labels on custom definitions.

Environments referencing laravel.conf in custom configuration within .warden directory must update their configuration to reference the generic application.conf instead as the file was renamed in the Nginx image for re-use in the future on additional environment types.

Docker images have all been re-located and/or mirrored to Quay with all built-in environment types having been updated to reference the images at the new location. Images currently on Docker Hub will remain available in order to preserve functionality of Warden 0.1.x release line, but will no longer be updated and compatibility with all functionality in Warden 0.2.0 is not guaranteed. Where these images are referenced in per-project configuration within the .warden directory, it is strongly suggested these references be updated to use images at the new locations:

Enhancements:

  • Added native support for multi-domain projects without requiring per-project routing configuration. This is accomplished using wildcard rules in the new Traefik labeling configuration allowing Warden to automatically route any sub-domain of the TRAEFIK_DOMAIN value in .env to the nginx and/or varnish container for handling by the application.
  • Added warden debug command which launches user into Xdebug enabled php-debug container for debugging CLI based workflows (issue #33; #35 by molotovbliss)
  • Added labels to fpm containers in magento2 environment to support use of Live Reload via an injected JS snippet in the site header or footer (issue #62)
  • Added WARDEN_ENV_NAME as prefix to each container hostname in compose configs (issue #29)
  • Added BYPASS_VARNISH flag which when set in project .env file will cause Traefik to route requests directly to nginx container rather than varnish (issue #63)
  • Added laravel environment type to support local development of Laravel based applications (issue #60)
  • Added Allure reporting support to Selenium setup for MFTF (#69 by lbajsarowicz)
  • Updated Traefik container and configuration to deploy Traefik 2.1; this is a potentially breaking change as Traefik v2 overhauled the labeling used to auto-configure routing on containers. All labeling on built-in environment configurations has been updated, but where labels are used to configure Traefik in per-project configuration files such as in .warden/warden-env.yml the project may require a coordinated update to labeling for continued interoperability of the customizations with Warden 0.2.0+
  • Updated Mutagen usage to rely on new commands and configuration in Mutagen 0.10+ (Warden will now throw an error if you attempt to start a sync and have a version of Mutagen older than 0.10.3 installed)
  • Updated configuration setup for SSH tunnel container so it will automatically re-instate the needed configuration (if missing) when running up, start, or restart to mitigate issue caused by macOS Catalina updates wiping out customizations to /etc/ssh/ssh_config (issue #59)
  • Updated env-init command to include default values for available variables in the project’s .env making customization a bit easier (issue #32)
  • Updated default Elasticsearch version for magento2 environments from 5.4 to 6.8 (issue #66)
  • Updated Selenium setup for MFTF to use hub and headless nodes by default (issue #67; #68 by lbajsarowicz)
  • Updated environment templates to pass TRAEFIK_DOMAIN and TRAEFIK_SUBDOMAIN into php-fpm and php-debug for use in documented install routine (issue #42)
  • Updated default PHP version for magento2 environments from 7.2 to 7.3 (issue #75)
  • Updated default Varnish version for magento2 environments from 4.1 to 6.0 (LTS)
  • Changed laravel.conf in nginx image to generic application.conf
  • Updated defaults for nginx on magento2 environments to be set in the docker env vs built into the nginx image; the image now defaults to loading the generic application.conf with /var/www/html as webroot

Bug fixes:

  • Fixed broken incorrect Blackfire environment template name for magento1 env type (issue #48)
  • Fixed inability to get help content specific to env sub-commands using warden env <command> -h

Version 0.1.12 (2019-12-10)

All Commits

Bug fixes:

  • Fixed issue breaking SSH tunnel as used for port-forwards.

Version 0.1.11 (2019-11-26)

All Commits

Enhancements:

  • Added option to enable and setup Selenium for use with MFTF via flag in project’s .env file (#40 by lbajsarowicz)
  • Added error message to warden install when docker-compose version in $PATH is incompatible (#41 by lbajsarowicz)

Version 0.1.10 (2019-09-23)

  • Added native support to Warden for using the split-database system in Magento Commerce during local development (#5 by navarr)
  • Added support for optional Blackfire profiling which can be enabled via settings in the project’s .env file (#12 by navarr)

Version 0.1.9 (2019-09-19)

  • Pinned image for Traefik to use traefik:v1.7 imgae vs traefik:latest to resolve issues caused by Traefik 2.0 having breaking changes in the configuration API

Version 0.1.8 (2019-09-06)

  • Introduced NODE_VERSION environment variable to specify which version of NodeJS to install in FPM images during container startup (by default v10 is now pre-installed in mage1-fpm and mage2-fpm images at the time of this release; latest images must be pulled from Docker Hub for this to work).
  • Fixed issue where if sub-directory included a relative symlink pointing .env at parent project’s .env file, --project-dir passed to docker-compose could be specified incorrectly when running warden from within the given sub-directory.

Version 0.1.7 (2019-08-23)

  • All published ports now listen on 127.0.0.1 by default as opposed to 0.0.0.0 for a local environment that is fully inaccessible to the outside world apart from using a proxy (such as Charles).

Version 0.1.6 (2019-08-10)

  • Changed the default value env-init uses for TRAEFIK_SUBDOMAIN to app (previously it would match the environment type)
  • Added mount of ~/.warden/ssl/rootca/certs:/etc/ssl/warden-rootca-cert:ro to each env type’s php-fpm and php-debug containers to support FPM images appending this CA root to the trusted ca-bundle on container start
  • Added extra_hosts entry to set an entry in /etc/hosts within php-fpm and php-debug containers pointing the project’s primary domain to the Traefik service IP address so curl and SoapClient (for example) may work inside a project’s FPM services
  • Added FPM containers to the “warden” network so they’ll be able to route http requests to Traefik

Version 0.1.5 (2019-07-19)

  • Changed Mutagen polling interval from 20 to 10 seconds
  • Removed generated directory from exclusions in Mutagen sync configuration (having this ignored breaks ability to step into generated class files during Xdebug sessions)
  • Fixed issue with Mutagen sync cofiguration causing pub/static (and other files) to have incorrect permissions resulting in 404’ing static resources
  • Fixed issue causing warden env to break when run from a path which contained a space (issue #3)

Version 0.1.4 (2019-07-15)

  • Removed exclusion of ‘node_modules’ from Mutagen sync for Magento 2 to avoid breaking Dotdigitalgroup_Email module in vendor directory (this module includes a node_modules dir pre-installed).

Version 0.1.3 (2019-07-10)

  • Added ability on linux to prevent warden from touching dns configuration when ~/.warden/nodnsconfig is present.
  • Updated install routine to properly trust CA root on Ubuntu (previously warden install would simply fail)
  • Updated DNS auto-configuration on linux systems to handle systemd-resolved usage.
  • Fixed issue on Ubuntu where dnsmasq container would fail to bind to port 53.
  • Fixed issue where lack of ~/.composer dir (resulting in creation by docker) can cause permissions error inside containers.
  • Fixed issue with bin/magento setup:install allowing it to pass permissions checks (#2 by fooman)
  • Fixed issue where env and env-init commands failed to reset shell colors when printing error messages (issue #4)

Version 0.1.2 (2019-07-03)

  • Added warden shell command for easily dropping into the php-fpm container (container name is configurable for supporting “local” environment types)
  • Added max_allowed_packet=1024M to db containers for M1 and M2 environments to avoid imports or upgrade routines from failing on large packets.
  • Changed php-fpm and php-debug to use custom images based on centos:7 as opposed to the alpine3.9 based official php-fpm images to avoid seg-faults when Source Guardian loader is installed alongside Xdebug.
  • Fixed issue with DEFINER stripping in db import allowing it to correctly strip from both TRIGGERS and ALGORITHM clauses.

Version 0.1.1 (2019-06-27)

  • Fixed bug where ‘db’ commands broke due to template overhaul in 0.1.0 release.

Version 0.1.0 (2019-06-27)

  • Changed the env type setup to automatically include additional configuration based on $OSTYPE.
  • Changed the environment template structure to utilize per-OSTYPE docker-compose config additions where environments differ from one host OS to another (such as magento2 env type, which uses plain mounts on linux-gnu but sync sessions on darwin)
  • Fixed a few error messages so they won’t change shell text color permanently when they output.
  • Fixed sync command to output error message when any sub-command is run on an env lacking a mutagen configuration.

Version 0.1.0-beta7

  • Added Xdebug support via additional php-debug container which Nginx routes to based on presence of XDEBUG_SESSION cookie.
  • Fixed Elasticsearch images used in Magento 2 environment templates and configured for lower overall memory utilization upon container start for a smaller env footprint.

Version 0.1.0-beta6

  • Added support for extending environment configuration on a per-project basis via .warden/warden-env.yml and .warden/warden-env.<WARDEN_ENV_TYPE>.yml files
  • Added local env type to support projects which do not conform to any of the templated environments suppoprted out-of-the-box
  • Changed Traefik configuration to automatically use the warden docker network (eliminates need for traefik.docker.network=warden label on all proxied containers
  • Changed Traefik configuration to require containers be explicitly enabled for Traefik via the label traefik.enable=true
  • Changed docker-compose environment type templates to version 3.5 for better extendability in project override files
  • Fixed bug where resolver setup on macOS would fail if /etc/resolver dir was already present during install (#1 by fooman)

Version 0.1.0-beta5

  • Fixed issue with docker-compose exit codes would result in error messages from global trap
  • Added auto-install of mutagen where not already present when any sync command is run
  • Added support for WARDEN_WEB_ROOT env setting to publish a sub-dir into /var/www/html
  • Changed images for php-fpm to use environment type specfic images from davidalger/warden repository

Version 0.1.0-beta4

  • Added “env” command for controlling docker based per-project environments (currently this simply passes all commands and arguments through to docker-compose).
  • Added “env-init” to add .env file with Warden configuration to the current working directory.
  • Added “sync” command with start/stop/list sub-commands for controlling per-project mutagen sessions.
  • Added “db” command for connecting to mysql and importing databases into the db service.
  • Added three environment types: magento1, magento2-mutagen, magento2-native with auto-selecting the correct M2 environment on Linux/macOS.
  • Fixed dnsmasq setup on Linux (nameserver is now configured on Linux when NetworkManager service is active during install; tested on Fedora 29)

Version 0.1.0-beta3

  • Fixed infinite loop on initial setup routine.

Version 0.1.0-beta2

  • Updated assertion to automatically execute “warden install” if installed metadata indicator is older than bin/warden.
  • Fixed issue on Linux hosts where ssh_key.pub was unusable inside tunnel container due to bad permissions.

Version 0.1.0-beta1

  • Initial beta release.