failing drush commands will now exit phab with an error code, instead of
continuing. This might break your deployments. To switch back to the old
behaviour set drushErrorHandling to lax
New
Introduction of script execution contexts. Scripts can now be executed in a
docker image of your choice, or inside an service of a docker-compose setup
For scripts using the docker-image-script-context
scripts:
build-frontend:
script:
- npm install -g gulp-cli
- npm install
- gulp run
finally:
- rm -rf node_modules
context: docker-image
image: node:12
user: node # Optional user, if not specified, the current uid:gid will be used
The current folder is mounted to /app in the container, and the current user-
and group will be used inside the running container. If you need to persist any
files after the container got killed, make sure to copy/ move them into the
/app-folder.
The container will be removed after the script finishes. Before the script is
executed, phabalicious will pull the docker-image.
The finally-step will executed after the script, it allows to cleanup any
leftovers, regardless of the result of the script-execution (e.g. returned
early because of an error).
script-actions for scaffolders are supporting this too, e.g.
This will use the docker-compose.yml from hosting/tests and run
docker-compose run php and exetute the script inside the php-service.
This works very well for scenarios where your app need other services to
function, like in this case a mysql database. In contrast to the docker-image-
script-context no folders are mounted into the service. You need to set this up
via your docker-compose.yml
Add md5-twig-filter to scaffolder
aValue: "{{ "Hello world" | md5 }}"
will be scaffolded to
aValue: "f0ef7081e1539ac00ef5b761b4fb01b3"
Add secret-twig-function to the scaffolder. It will return the value for a given secret.
The mysql-password is {{ secret("mysql-password" }}
Host-configs can be hidden from list:hosts by setting hidden to true
hosts:
hiddenHost:
hidden: true # host config will not be shownn on `list:hsots`
Add a new info-section to host-configs and a project specific description. This allows the user to add a short
description and one or more urls which will be displayed on phab list:hosts
description: |-
A multiline global project description which will be outputted on
list:hosts
hosts:
local:
info:
description: A local installation aimed for development
publicUrl: https://localhost
category:
id: local
label: Local installations
someDevInstance:
info:
description: |-
A multiline string describing someDevInstance which has multiple public
urls
publicUrls:
- https://web.example.com
- https://bo.example.com
- https://search.example.com
category:
id: dev
label: Develop installations
Note, that list:hosts will show only the first publicUrl. But you can run
phab list:hosts -v to get a more verbose output with all urls and descriptions
Example output:
$ phab list:hosts
List of found host-configurations:
==================================
Local installations
-------------------
* local https://localhost
Develop installations
---------------------
* someDevInstance https://web.example.com
New methods for handling database tasks (importing or exporting a dump) added:
mysql
sqlite
The functionality was moved out from the drush-method and replaced by the new
methods.
Database credentials will be obtained automatically if not part of the cofiguration
e.g. from drush or environment-variables/ the .env-file for laravel-based projects
New command artisan and new method laravel for laravel-based projects. Just
run e.g. phab -cyourconfig artisan db:seed
Add support for global artisanTasks
Methods can declare dependencies to other methods, e.g. using the method drush
will implicitely use method mysql if not stated differently in needs.
Allow users to override rsync options via the rsyncOptions settings, e.g.
rsyncOptions:
- --delete
You can now scaffold your docker configuration before running any docker-related
command e.g. docker or docker-compose. That means you can scaffold the
corresponding docker-compose.yml or docker-compose.override.yml before running
a command against the config. An example:
Breaking changes:
drushErrorHandling
tolax
New
Introduction of script execution contexts. Scripts can now be executed in a docker image of your choice, or inside an service of a docker-compose setup
For scripts using the
docker-image
-script-contextThe current folder is mounted to
/app
in the container, and the current user- and group will be used inside the running container. If you need to persist any files after the container got killed, make sure to copy/ move them into the/app
-folder.The container will be removed after the script finishes. Before the script is executed, phabalicious will pull the docker-image.
The
finally
-step will executed after the script, it allows to cleanup any leftovers, regardless of the result of the script-execution (e.g. returned early because of an error).script
-actions for scaffolders are supporting this too, e.g.For scripts using the
docker-compose-run
script-context:Corresponding
docker-compose.yml
:This will use the
docker-compose.yml
fromhosting/tests
and rundocker-compose run php
and exetute the script inside thephp
-service. This works very well for scenarios where your app need other services to function, like in this case a mysql database. In contrast to thedocker-image
- script-context no folders are mounted into the service. You need to set this up via your docker-compose.ymlAdd
md5
-twig-filter to scaffolderwill be scaffolded to
Add
secret
-twig-function to the scaffolder. It will return the value for a given secret.Host-configs can be hidden from
list:hosts
by settinghidden
totrue
Add a new
info
-section tohost
-configs and a project specificdescription
. This allows the user to add a short description and one or more urls which will be displayed onphab list:hosts
Note, that
list:hosts
will show only the firstpublicUrl
. But you can runphab list:hosts -v
to get a more verbose output with all urls and descriptionsExample output:
New methods for handling database tasks (importing or exporting a dump) added:
mysql
sqlite
The functionality was moved out from the
drush
-method and replaced by the new methods.Database credentials will be obtained automatically if not part of the cofiguration e.g. from drush or environment-variables/ the .env-file for laravel-based projects
New command
artisan
and new methodlaravel
for laravel-based projects. Just run e.g.phab -cyourconfig artisan db:seed
Add support for global
artisanTasks
Methods can declare dependencies to other methods, e.g. using the method
drush
will implicitely use methodmysql
if not stated differently inneeds
.Allow users to override rsync options via the
rsyncOptions
settings, e.g.You can now scaffold your docker configuration before running any docker-related command e.g.
docker
ordocker-compose
. That means you can scaffold the correspondingdocker-compose.yml
ordocker-compose.override.yml
before running a command against the config. An example:This will copy the two files in
templates
into the root-folder and apply any configuration from the hostexample
before copying it to the destination.db
-command with subcommandsinstall
anddrop
, allows you to create or drop a database.--skip-drop-db
forcopy-from
andrestore:sql-from-file
to not drop the table before running the import--skip-reset
forcopy-from
which will not run the reset-task after the import.Changed
drush
into the methodsmysql
andsqlite