Jump to heading Changelog
All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
Jump to heading 3.8.28 (2023-11-08)
Jump to heading Features
- new
docker-copy
action for artifact based deployments (a036353)
Jump to heading 3.8.27 (2023-09-10)
Jump to heading Features
- add option --json to save the output of parallel runs into a json file (7bf1610)
Jump to heading 3.8.26 (2023-08-23)
Jump to heading Bug Fixes
- phpstan fixes, composer updates (4c2dc00)
Jump to heading 3.8.25 (2023-07-19)
Jump to heading Bug Fixes
- Validate ssh config properly, even when not using a SshShellProvider (2995bf5)
Jump to heading 3.8.24 (2023-07-17)
Jump to heading Bug Fixes
- Fix faulty test for additionalNeeds (2892675)
- Merge
additional_needs
properly withneeds
(fixes #311) (606202e)
Jump to heading 3.8.23 (2023-07-14)
Jump to heading Bug fixes
- Throw an exception, when runCommand (npm, yarn or php artisan) returns an error. Fixes #309
Jump to heading 3.8.22 (2023-06-30)
Jump to heading Bug Fixes
- Remove double validation for inheritFromBlueprint (f767d2a)
- Terminate host shell after a docker command to fix some edge cases (6ec2247)
- Wait up to 2 secs until docker container is available (a16fcfd)
Jump to heading 3.8.21 (2023-06-21)
Jump to heading Bug Fixes
- Add support for kubectl --retries flag to circumvent failing filetransfers (a0d1ee1)
- Do not add command line args for yarn and npm to increase compatibility (1c5821a)
Jump to heading 3.8.20 (2023-05-12)
Jump to heading Bug Fixes
- Better error message if local scaffold file can't be resolved (87f5b38)
Jump to heading 3.8.19 (2023-04-13)
Jump to heading Features
- Allow an about section for scaffolding files (8db3f69)
Jump to heading Bug Fixes
- Do not validate empty values for questions (77f5190)
Jump to heading 3.8.18 (2023-04-12)
Jump to heading Bug Fixes
- Allow to disable configuration management for drupal based projects (36b18c7)
- alter_yaml_file respects empty arrays in yaml (10d8540)
- use shell-piping to get rid of temporary files when getting a dump (9abb2d1)
Jump to heading 3.8.17 (2023-03-14)
Jump to heading Bug Fixes
- put/getFile will resolve relative paths before copying the actual file (98a7be2)
- Run docker-compose in quiet mode for script execution context (ab76c83)
Jump to heading 3.8.16 (2023-02-17)
Jump to heading Bug Fixes
- config autocomplete won't autocomplete hidden configs anymore (9d2dc2b)
- Fix some deprecation warnings for PHP 8.2 (0419a0e)
- Remove local docker images for script-execution-context docker-compose-run (49fc651)
Jump to heading 3.8.15 (2022-11-11)
Jump to heading Bug Fixes
- Apply environment correctly when using script execution context (3890447)
Jump to heading 3.8.14 (2022-11-11)
Jump to heading Features
- Set USER_ID and GROUP_ID env-vars for docker-compose-run script execution context (05e0fe6)
Jump to heading 3.8.13 (2022-11-09)
Jump to heading Bug Fixes
- Cleanup more thouroughly after docker-compose is finished (b988a6a)
Jump to heading 3.8.12 (2022-11-09)
Jump to heading 3.8.11 (2022-11-03)
Jump to heading Bug Fixes
- Fix missing shell for kubectl execution context (0c02c3d)
Jump to heading 3.8.10 (2022-10-31)
Jump to heading Features
- New option bindCurrentFolder to disable bindmount of current folder for script execution context docker-image (4618235)
Jump to heading 3.8.9 (2022-10-31)
Jump to heading 3.8.8 (2022-10-30)
Jump to heading Features
- Allow replacement patterns in script context data (5f7d2eb)
- Provide more context when replacement-patterns cant be expanded (286998b)
- script-execution-context: Add support for rootFolder and pullLatestImage (4b577a2)
- Show better error message if a script requires a passed argument via the command line (84a60e3)
Jump to heading Bug Fixes
- deps: update dependency twig/twig to v3.4.3 [security] (8712c8a)
- Fix regression and prevent adding
script
toneeds
when already part of it (94e0847) - Fix regression and prevent adding
script
toneeds
when already part of it (9d5c98d) - show info message, when deploy-hooks are not executed, because of a too old
drushVersion
(3861055)
Jump to heading 3.8.7 (2022-09-24)
Jump to heading Bug Fixes
- Add support for yarn.buildCommand (a53c624)
- Artifact deployment-method used wrong way to pass rootfolders to cloned config, this is now fixed (e5ab47d)
- Fix docker-image-on-docker-host (2a457c9)
- Script-action throws now an exception if execution failed with an error (42d2cf4)
Jump to heading 3.8.6 (2022-09-03)
Jump to heading Bug Fixes
- Remove debug output (b345060)
Jump to heading 3.8.5 (2022-09-02)
Jump to heading Bug Fixes
- scaffolder: Fix scaffolding files from within the phar-archive. (1b9c4a8)
- Silence some warnings (8967400)
Jump to heading 3.8.4 (2022-08-24)
Jump to heading Bug Fixes
- Show deprecation message for deprecated *RunContext value dockerHost (7199452)
Jump to heading 3.8.3 (2022-08-23)
Jump to heading 3.8.2 (2022-08-23)
Jump to heading 3.8.1 (2022-08-23)
Jump to heading Bug Fixes
- Fix edge-cases where 1password cli is not installed (35830b4)
- shell-completion runs without warnings on PHP 8.1 (452d4bc)
Jump to heading 3.8.0 (2022-08-22)
- Official release of 3.8.0 beta, an overview of the changes can be found at https://docs.phab.io/blog/whats-new-in-phab-3-8.html
- See the dedicated release notes of the beta version for detailed infos
Jump to heading 3.7.18 (2022-08-16)
Jump to heading Bug Fixes
- Fix updates when requesting beta versions (9a5c269)
Jump to heading 3.8.0-beta.17 (2022-08-19)
Jump to heading Features
- Allow methods to declare deprecation mappings (ab37bd4)
- Make runScriptImpl public (4c15d5e)
- Methods based on RunCommandBaseMethod can use docker-image as run context (91b59b6)
- Validation: Add support for hierarchical keys using dot-notation (70c0b80)
- yarn, npm and composer methods can use docker-image as run-contexts now (894fcf6)
Jump to heading Bug Fixes
- Add a warning for deprecated properties (0956a98)
- configuration: Move deprecation logic before handling defaults (19193e8)
- Handle run context better for yarn, npm and others (bede679)
- Node::setProperty will create nested properties if needed. (058dfef)
- ScriptExecutionContext: Use absolute path for working directory (76d777c)
- Shortcut for Node based data (00b8dcb)
Jump to heading 3.8.0-beta.16 (2022-08-11)
Jump to heading 3.8.0-beta.15 (2022-08-10)
Jump to heading Bug Fixes
- Code cleanup, enable debug mode with
-vvvv
(3b253d9) - Do not run update check on self:update (55f9b13)
- Don't try to apply empty environment variables (623179b)
Jump to heading 3.8.0-beta.14 (2022-08-03)
Jump to heading Features
- Add new command restic to interact with your backups (e054444)
- Add new command restic to interact with your backups (800927c)
Jump to heading Bug Fixes
- Normalize version number before testing for available update (7ca6032)
Jump to heading 3.8.0-beta.13 (2022-07-28)
Jump to heading Bug Fixes
- 1password: fix version detection (6a50b44)
Jump to heading 3.8.0-beta.12 (2022-07-28)
Jump to heading Bug Fixes
- 1password: fix version detection (6a50b44)
Jump to heading 3.8.0-beta.11 (2022-07-28)
Jump to heading Bug Fixes
- 1password: fix version detection (6a50b44)
Jump to heading 3.8.0-beta.10 (2022-07-27)
Jump to heading Bug Fixes
- ddev: Fix docker integration, compute right docker container name, replace patterns in info and docker (2cf445e)
Jump to heading 3.8.0-beta.9 (2022-07-23)
Jump to heading Bug Fixes
- ddev: fix bug when no ddev is used (b744070)
Jump to heading 3.8.0-beta.8 (2022-07-16)
Jump to heading Features
- configuration: allow
additionalNeeds
for host-configurations to declare additional needs (5edacb2) - ddev: add missing ddev method implementation (11bf097)
- ddev: experimental lightweight integration with ddev (fcb8162)
Jump to heading Bug Fixes
- fix regression not calling reset after copy-from (bdfe66d)
Jump to heading 3.8.0-beta.7 (2022-07-14)
Jump to heading Bug Fixes
- return a default config name if none set (30dfffa)
Jump to heading 3.8.0-beta.6 (2022-06-09)
Jump to heading Bug Fixes
- Allow arguments containing = (7e9eb94)
Jump to heading 3.8.0-beta.5 (2022-06-06)
Jump to heading Bug Fixes
- fix failing tests (2c7bc3a)
- fix misc erros in database tests (e178be1)
- script-exection-context: Update docs. (89086d4)
Jump to heading 3.8.0-beta4 (2022-05-29)
Jump to heading Bug Fixes
Jump to heading 3.8.0-beta3 (2022-05-26)
Jump to heading Bug Fixes
- Expose global settings as replacement patterns for k8s parameters (3fd09e4)
- Introduce new utility function to check if a string is a url (d8d753a)
- k8s: Fix bug in cleanup code for the temporary folder (cb9acca)
- Make sure db is installed when trying to import sql (129c42a)
- Pass absolute paths to scaffolder to prevent ambiguities when resolving relative paths (a13a360)
- Show warning if tables cant be dropped (58c89b3)
- Use absolute path for base urls (b6b1616)
Jump to heading 3.8.0-beta2 (2022-04-11)
Jump to heading Bug Fixes
- k8s: Apply replacements for
parameters
before doing the scaffold (468317f) - Limit when to check for updates again (e5fb8af)
Jump to heading 3.8.0-beta.1 (2022-04-02)
Jump to heading Features
- Add support for database credentials from 1password cli (1903ec5)
- Allow global docker config which gets inherited by host-specific docker config (d1221d4)
- new command
db:query
to run custom queries against a db configuration (21a2048)
Jump to heading Bug Fixes
- Better error reporting for missing scaffolding source files (7a2f675)
- command output left information when using blueprint (9b1bab9)
- confirm returns now 0 instead of an empty result (Fixes #219) (bfab90b)
- fix error in password extraction from 1p client, add test-coverage (3b0730e)
- Get parent folder for a specific data-item directly from the source (513df49)
- handle another race-condition when merging arrays (2588478)
- Handle empty results from op with more grace (32c0307)
- Handle missing data with more grace (751d4e8)
- Handle protected properties better (ef3885c)
- Hide warning when using PHP 8.1 (7020ece)
- inheritFromBlueprint did not work correctly with new node-based data-retrieval (b1b18db)
- jira: Change jql to support also jira-cloud (b5f89b4)
- race-condition in new data handling method (e5f1e99)
- resolveRelativeInheritance handles parent folder now for all cases (5185b57)
- show log-messages and app-prompts on stderr if the output is not decorated, e.g. when using pipes (Fixes #250) (8e1ee2b)
- throw an exception if tables cant be dropped (9f3d9c8)
- Use absolute paths when scaffolding from a relative path (26fdfcb)
- Wrap mysql password in quotes (cea6466)
Jump to heading 3.8.0-beta.0 / 2022-04-02
Jump to heading Changed:
- Minimum PHP requirement: 7.3
Jump to heading New:
-
Added script- and scaffold-callbacks for encryption and decryption using
defuse/php-encryption
You can encrypt files in a script with
secrets:
name-of-secret:
question: What is the password
scripts:
encryt:
- encrypt_files(path/to/files/or/folders/to/encrypt/*.ext, path/to/folder/to/store/encrypted/files, name-of-secret)
decryt:
- decrypt_files(path/to/files/or/folders/to/decrypt/*.enc, path/to/folder/to/store/decrypted/files, name-of-secret)The scaffolder has a new callback called
decrypt_assets
which works the same ascopy_assets
but with a preliminary decryption stepscaffold:
- decrypt_assets(targetFolder, dataKey, secretName, twigExtension) -
Refactored data is read and stored, which allows now to introspect a configuration mor thoroughly than before:
- Added a new command
find:property
which will promt the user for a propery-name, and display from where the value got inherited and other useful information. If the property cant be found, a list of possible candidates is shown, the input supports autocomplete. - The command
about
will output from where the data got inherited, when the-v
was passed. - Relative inheritance is now fully supported, that means you can inherit from a file/ http ressource via a relative path
- Added a new command
-
Added new callbacks for getting a file from 1password-cli / -connect
-
Obfuscate passwords in log-outputs
-
new command
db:query
to run custom queries against a db configuration -
Add support for database credentials from 1password cli
-
Add support for nested fields by 1password
-
Add new command
install:from-sql-file
which will stream-line the installation process when installing from a sql-file (Fixes #223) -
Add options for mac-arm to workspace commands, ignore saved existing scaffold-tokens
-
Add feature-flag to use rsync implementation of get/put:file on k8s
Jump to heading Fixed
- Do not run reset when only running copy-from files (Fixes Do not run reset after phab copy-from
files #181) - Change jql to support also jira-cloud
confirm
-question returns now 0 instead of an empty result (Fixes #219)- Hide warning when using PHP 8.1
- Use absolute paths when scaffolding from a relative path
- show log-messages and app-prompts on stderr if the output is not decorated, e.g. when using pipes (Fixes #250)
- command output left information when using blueprint
- fix error in password extraction from 1p client, add test-coverage
- throw an exception if tables cant be dropped
- Handle empty results from op with more grace
- Wrap mysql password in quotes
- feat: Allow global docker config which gets inherited by host-specific docker config
- Better error reporting for missing scaffolding source files
- Pass context down the lane, when running multiple commands serially
- Fix warnings when no passwords are cached
- Fix version check, do not check for version when running
self:update
(Fixes #174) - Use mysql port information when running install
- Report deprecation messages after all inheritance is resolved
- Show proper error message if script could not be located in the fabfile. (Fixes #220)
- Better file names with date and time (Fixes #214)
- Fix problems with tilde in file path in mysql method
- Reset admin password after drupal is deployed completely (Fixes #211)
- Do not run reset when only running
copy-from files
(Fixes #181) - Update grumphp so it works under PHP 8.x
- Switch to consolidation/self-update as the other used lib is abandonded. Fixed some warnings under php 8.1
- Pass shellProviderOptions to rsync
- dump database structure and data separately to prevent missing table structures for ignored tables
- Refactor copyAssets-callback to be more flexible
Jump to heading 3.7.17 / 2022-07-28
Jump to heading Fixes:
- fix(1password): fix version detection
Jump to heading 3.7.16 / 2022-07-23
Jump to heading New:
- feature(1password): Add support for 1password cli 2.x
Jump to heading 3.7.15 / 2022-07-14
Jump to heading Fixes:
- fix(secrets): Fix replacement-patterns validation, exclude secrets from validation
Jump to heading 3.7.14 / 2022-07-05
Jump to heading Fixes:
- fix(script-execution-context): Create unique project-name for docker-compose-run
Jump to heading 3.7.13 / 2022-06-08
Jump to heading Fixes:
- Changed name of overridden private class property. (Fixes #272)
Jump to heading 3.7.12 / 2022-05-30
Jump to heading Fixes:
- fix(k8s): Add test coverage for k8s scaffold, fixed some bugs because of race-conditions
Jump to heading 3.7.11 / 2022-05-30
Jump to heading Fixes:
- fix(k8s): Fix the real bug which prevents scaffolding k8s files introduced with 3.7.10
Jump to heading 3.7.10 / 2022-04-19
Jump to heading Fixes:
- fix(k8s): Fix bug in cleanup code for the temporary scaffold folder
Jump to heading 3.7.9 / 2022-04-02
Jump to heading Fixes:
- fix: [#260] self-update --allow-unstable=1 toggles between stable and unstable version
- Updated dependencies
Jump to heading 3.7.8 / 2022-03-15
Jump to heading Fixes:
- notify: Handle
--channel
option correctly.
Jump to heading 3.7.7 / 2022-03-02
Jump to heading Fixes:
- Check only params for globally used parameter options (Fixes #254)
- Remove accidentally added composer mirror
- Use mysql port information when running install
Jump to heading Chore:
- Introduce renovate bot to update dependencies automatically
- Update depencencies
Jump to heading 3.7.6 / 2022-01-18
Jump to heading Fixes:
- Show warnings always
Jump to heading 3.7.5 / 2021-12-17
Jump to heading Fixes:
- Use
--no-defaults
for mysql commands - Use same mysql dump options as drush
- Add error handling when drush tries to get the db credentials
- Fix problems with tilde in file path in mysql method
- Reset admin password after drupal is deployed completely (Fixes #211)
Jump to heading 3.7.4 / 2021-12-08
Jump to heading Fixes:
- When getting a dump from a database mimic the behavior of drush, get the full
structure but ignore data from certain tables (defined in
sqlSkipTables
) - When copying files do not interact with the database
Jump to heading New:
- New
db
-subcommands:db:install
will install a new databasedb:drop
will drop all tables in the databasedb:shell
will run a database cli to work directly with the DB (similar todrush sql-cli
)db:shell:command
will print out the command necessary to run a the db cli
Jump to heading 3.7.3 / 2021-12-02
Jump to heading Fixes:
- Get credentials before trying to wait for the database
- Add output-option to
get:property
-command to save the output to a file
Jump to heading 3.7.2 / 2021-11-30
Jump to heading Fixes:
- Resolve secrets for
get:property
and add options to get output as yaml or json - Introduce useNfs for multibasebox scaffolder
- Install db before running copy-from
- Plugin discovery works when phab is started from a subfolder. Fixes #207
Jump to heading 3.7.1 / 2021-11-11
Jump to heading Fixes:
- Add support for protected properties which wont be overridden by override-files.
Jump to heading 3.7.0
Jump to heading Breaking changes:
- phabalicious now requires PHP 7.2
- 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
tolax
Jump to heading 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-contextscripts:
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 usedThe 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.hosts:
scaffold:
actions:
- action: script
arguments:
context: docker-image
image: node:14
script:
- npm install -g gulp-cli
- npm install
- gulp runFor scripts using the
docker-compose-run
script-context:scripts:
test:backend:
script:
- composer install
- php artisan db:wipe --force
- php artisan migrate
- php artisan db:seed
- vendor/bin/phpunit
context: docker-compose-run
rootFolder: ./hosting/tests
service: php
workingDir: /app #working dir in the php serviceCorresponding
docker-compose.yml
:version: '2.1'
services:
php:
depends_on:
db:
condition: service_healthy
build:
context: ../../
dockerfile: ./hosting/builder/Dockerfile
environment:
DB_PASSWORD: root
DB_USERNAME: root
DB_DATABASE: tests
DB_HOST: db
APP_ENV: local
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: tests
healthcheck:
test: "mysqladmin -u root -proot ping"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.yml -
Add
md5
-twig-filter to scaffolderaValue: "{{ "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 settinghidden
totrue
hosts:
hiddenHost:
hidden: true # host config will not be shownn on `list:hsots` -
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
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 installationsNote, 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:
$ 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 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.rsyncOptions:
- --delete -
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:hosts:
example:
docker:
scaffold:
assets:
- templates/docker-compose.yml
- templates/docker-compose.override.ymlThis will copy the two files in
templates
into the root-folder and apply any configuration from the hostexample
before copying it to the destination.- new
db
-command with subcommandsinstall
anddrop
, allows you to create or drop a database. - option
--skip-drop-db
forcopy-from
andrestore:sql-from-file
to not drop the table before running the import - option
--skip-reset
forcopy-from
which will not run the reset-task after the import.
- new
Jump to heading Changed
- Refactor how script-callbacks are handled internally, use a more oo-style
- Moved all db related functinality out of
drush
into the methodsmysql
andsqlite
- Tests do not depend on the current working directory anymore and clean up after themselves.
- Refactor script execution to allow lazy validated replacements
- Fix unresolved replacement patterns in DockerMethod
- Allow artisan tasks to be configured
Jump to heading 3.6.16 / 2021-09-23
Jump to heading Fixed:
- Fix stuck drush deploy:hook
Jump to heading 3.6.15 / 2021-08-04
Jump to heading Fixed:
- Harden the way how phab determines the current running pod
Jump to heading 3.6.14 / 2021-07-01
Jump to heading Fixed:
- Fix
copy-from db
fordockerExecOverSsh
-shells, fixes #175 - Fix
get:file
andput:file
fordockerExecOverSsh
on Mac OS
Jump to heading 3.6.13 / 2021-07-01
Jump to heading New:
- Enable copy-from with kubernetes pod as target as long the source is reachable via SSH and a ssh-connection can be established between the pod and the data-source.
Jump to heading 3.6.12 / 2021-06-30
Jump to heading Fixed:
- Fix getFile for docker-exec-over-ssh shell provider
- Update multibasebox setup for workspace command
- Cleanup kube-folder before scaffolding. Fixes #161
Jump to heading 3.6.11 / 2021-06-01
Jump to heading Fixed:
- Fix blueprint template variable
slug.with-hyphens.without-prefix
- Bump dns-packet from 1.3.1 to 1.3.4
- Bump browserslist from 4.16.3 to 4.16.6
- Update copy action docs
Jump to heading 3.6.10 / 2021-05-20
Jump to heading Fixed:
- Better error handling for version check
- Fix broken
isTerminated()
- Use github actions for creating automatic releases
- Run php unit tests in github actions
Jump to heading 3.6.9 / 2021-05-19
Jump to heading Fixed:
- Fix missing method in DryRunShellProvider, add test coverage
Jump to heading 3.6.8 / 2021-05-19
Jump to heading Fixed:
- Terminate current shell, when new app gets deployed via k8s
Jump to heading 3.6.7 / 2021-05-19
Jump to heading Changed:
- Make secret-gathering more verbose, support for multiple 1password-connect-tokens (Fixes #156)
Jump to heading 3.6.6 / 2021-05-13
Jump to heading New:
- Allow passing of 1password JWT token via environment variable
- Add support for hidden questions (e.g. for passwords)
- Add option
forceConfigurationManagement
for cases where phab cant detect it properly
Jump to heading Changed:
- Set new default for configurationManagement
- If there's an error with 1password cli or connect, display error, but continue
Jump to heading 3.6.5 / 2021-05-11
Jump to heading New:
- Support for 1password connect, see updated docs.
Jump to heading Fixed:
- Fix jira command (fixes #155)
- Use the pod-template-hash to get the actual running pod, instead of any pod (Fixes #153)
- Better error messages and throw an exception if a secret could not be retreived
Jump to heading 3.6.4 / 2021-04-30
###Fixed:
- Fix relative inherits from remote and using
@
(Fixes #150) - Update app:scaffold docs
Jump to heading 3.6.3 / 2021-04-15
Jump to heading Changed:
- Set hostconfig for subsequent commands in artifact based deployments
- Use dot-notation to define the data to use when altering files
- Add configBaseFolder configuration option to override the config base folder name
- Add support for storing secrets in .env file
- Add support for named scripts (from the scripts section) in artifact based deployment
Jump to heading Fixed:
- Fix bug in escaping replacement patterns
- Pass secrets to subsequent calls via execute callback
- Save cloned hostconfig when running artifact based deployment, so execute callback works on latest data
Jump to heading 3.6.2 / 2021-04-14
Jump to heading Fixes
- Allow multiple secrets in one line
Jump to heading 3.6.1 / 2021-04-14
Jump to heading Fixes
- Fixing parsing error #145
- Set base-url from scaffold-file as a fallback (fixes #144)
Jump to heading 3.6.0 / 2021-04-07
The easter relase 3.6.0
(\(\
(='.')
o(_")")
Jump to heading New in this release (from the changelog of the beta releases):
- offsite backups via new
restic
-method - Introduce new secrets mechanims to retrieve secrets from the outside
- Refactor app:create and app:destroy, add implementation for k8s
- Allow prefixing paths for inheritsFrom with
@
and introduceinheritanceBaseUrl
to set a common base path - Implement base url mechanism for scaffolds
- Allow inheritance in blueprints using
blueprintInheritsFrom
Jump to heading 3.6.0-beta.9 / 2021-04-06
Jump to heading Fixed:
- Add restic sftp host to known hosts automatically
- Throw an error instead of asking for a ssh password, can be overriden, if needed (Fixes #142)
- Update dependencies
Jump to heading 3.6.0-beta.8 / 2021-04-06
Jump to heading New:
- Allow user to provide tar-options for
get:files-dump
(Fixes #138) - Add new option for
put:file
to set the destination for the file copy. (Fixes #137) - Allow
computedValues
also for scaffold scripts
Jump to heading 3.6.0-beta.7 / 2021-03-29
Jump to heading New:
- Allow user to provide tar-options for
get:files-dump
(Fixes #138) - Add new option for
put:file
to set the destination for the file copy. (Fixes #137) - Allow
computedValues
also for scaffold scripts
Jump to heading 3.6.0-beta.6 / 2021-03-25
Jump to heading Fixes:
- Try to replace patterns in strings only, fixes #141
- Remove double --namespace from k8s methods
Jump to heading 3.6.0-beta.5 / 2021-03-24
Jump to heading Fixed:
- Allow replacements for
alter_file_*
callbacks
Jump to heading 3.6.0-beta.4 / 2021-03-24
Jump to heading Fixes:
- Fix overridden data when executing scaffolds in scaffolds, pass options down the lane
- Resolve secrets before executing a command
Jump to heading 3.6.0-beta.3 / 2021-03-24
Jump to heading Fixed:
- Disable quiet for scaffold callback to allow questions to be shown
Jump to heading 3.6.0-beta.2 / 2021-03-24
Jump to heading Fixed:
- Remove dead code
- Use release version when checking
requires
- Fix fatal on startup, fixes #136
- Fix for backups w/o git hash
Jump to heading 3.6.0-beta.1 / 2021-03-23
Jump to heading New:
- Initial implementation of doing backups via restic
- Implement list:backups and restore for restic. Initial support for other backup methods implemented
- Introduce new secrets mechanims to retrieve secrets from the outside
- Refactor app:create and app:destroy, add implementation for k8s
- Add new way of handling secrets via new replacement pattern
- Support for password-only fields from 1password
- Resolve secrets for scripts
- Resolve secrets on demand, prevents prompts for secrets for unrelated commands
- Allow prefixing paths for inheritsFrom with
@
and introduceinheritanceBaseUrl
to set a common base path - Implement base url mechanism for scaffolds
- Add option to scaffold-commands to provide a base url for scaffolders
- Allow inheritance in blueprints using
blueprintInheritsFrom
Jump to heading Changed:
- Update dependencies, support composer 2
- Refactor backup related code, move common code into base class
- Show an error message for
copy-from files
where source or destination does not support rsync (e.g. docker-exec, kubectl) - Add deprecation message for ftp-passwords
Jump to heading Fixed:
- Add missing license to composer.json, fixes #132
- Fix getSQLDump and restoreSqlFromFile tasks
- When checking for a mysql connection do not consume default config files
- Enhance error message when inheritsFrom/blueprintInheritsFrom fails
- Throw an exception when the name of the docker container is missing
- Require rinnung app for shell-task
- Fix check for existing app in k8s, better error messages
Jump to heading 3.5.36 / 2021-03-15
Jump to heading Fixed:
- Fix shell command for docker-exec and k8s. Fixes #130
Jump to heading 3.5.35 / 2021-03-14
Jump to heading Fixed:
- Fix
getSQLDump
andrestoreSqlFromFile
tasks
Jump to heading 3.5.34 / 2021-03-11
Jump to heading New
- new
scaffold
internal command to run scaffolders from within a scaffolder
Jump to heading Changed:
- Percentages for replacement patterns can be escaped via
\
in scripts - webhook-urls can contain replacement-patterns
Jump to heading 3.5.33 / 2021-03-04
Jump to heading Fixed:
- Run install from-config only for drush >=9 (fixes #121)
Jump to heading 3.5.32 / 2021-03-01
Jump to heading Fixed:
- Fix regression when restarting containers with cached container name
Jump to heading 3.5.31 / 2021-03-01
Jump to heading New
- Initial implementation of new command
docker-compose
- Rework docker-compose command so it can be run interactively
- Introduce isRunningAppRequired, to exit early if not the case
- Add support for
deploy
-command from drush 10.3 (fixes #106) - Check target repository for new commits and show a warning (fixes #124)
Jump to heading Changed
- Use same deploy strategy as drush
- Add drush cr after updb to mimic drush deploy
Jump to heading Fixed
- Fix broken caching of remote resources
- Show error message for
phab shell
, fixes #122
Jump to heading 3.5.30 / 2021-01-27
Jump to heading Added:
- Add gitOptions to git-artifact deployment to change the actual git clone command
Jump to heading 3.5.29 / 2021-01-21
Jump to heading Fixed:
- Throw an exception when drush cim fails
Jump to heading 3.5.28 / 2021-01-15
Jump to heading New:
- New callbacks for scripts and scaffolders,
set_directory
andalter_yaml_file
Jump to heading Changed:
- Switch to github branching strategy
install
will try to use existing configuration when available- Bump ini from 1.3.5 to 1.3.8
- Make getting data over http more robust, add tests for it
- Scaffolder: Allow merge of numerical and associative arrays
- Scaffolder: Sort actions by key before processing them
- Scaffolder: Remove default actions
- Install: Fix bug in detection of correctly setup configuration management
- Install: Fix install without config by setting context result.
- Install: Add --existing-config command option to drush site-install if config sync dir contains existing configuration.
Jump to heading 3.5.27 / 2020-11-12
Jump to heading Fixed:
- Allow merge of numerical and associative arrays
Jump to heading 3.5.26 / 2020-11-12
Jump to heading Fixed:
- Revert change to mergeData, add test coverage for it
Jump to heading 3.5.25 / 2020-11-12
Jump to heading Changed:
- Sort actions by key before processing them
- Remove default actions
Jump to heading 3.5.24 / 2020-11-06
Jump to heading Fixed:
- Provide default value for
alterSettingsFile
property
Jump to heading 3.5.23 / 2020-11-06
Jump to heading Fixed:
- Fix file copying for kubectl shells
- Enhance docs for git based artifact deployment
- Apply shellProviderOptions also to other ssh commands
- Fix shell creation for ssh when executed as a sub process, typos
Jump to heading New:
- Add new artifact actions
log
andmessage
(Fixes #109)
Jump to heading 3.5.22 / 2020-10-18
Jump to heading Fixed:
- Fix error in scaffolder which prevented to ask for the project name
- Try to prevent timeouts when using k8s
- Set tty flag for new shells
Jump to heading Changed:
- Refactor how scripts and scaffolders handle callbacks
- Enhance argument parsing, updated test-coverage
- Allow
inheritsFrom
with absolute file names - Update vuepress
- Refactor how options are passed to the shell-provider.
Jump to heading 3.5.21 / 2020-10-11
Jump to heading Fixed:
- Fix regression with
get:file
,put:file
andcopy-from
Jump to heading 3.5.20 / 2020-10-11
Jump to heading New:
- Add new option
alterSettingsFile
which defaults to true
Jump to heading Changed:
- Allow inheritance to merge arrays if one of them is associative
Jump to heading 3.5.19 / 2020-10-09
Jump to heading Fixed:
- Reset auto-discovered docker name after docker-tasks to prevent outdated information
- Show proper error-message if a remote asset cant be loaded
Jump to heading 3.5.18 / 2020-10-07
Jump to heading Fixes:
- Provide sensible defaults for
podSelector
, fix a warning - Add test-coverage for most shell-providers, fixes #104
Jump to heading 3.5.17 / 2020-10-01
Jump to heading Breaking change:
-
Provide a more secure password for dev-instances. This will change the admin password of your dev-instances as the default passwords got replaced with a more secure variant.
You can get the admin-password for a given instance via
phab -c<config> get:property adminPass
.Or you can override the
adminPass
in the fabfile globally or on a per host-basis. Another option for local development is creating afabfile.local.override.yaml
in your multibasebox folder and change its content to sth like thishosts: mbb: adminPass: admin
Jump to heading 3.5.16 / 2020-09-27
Jump to heading Fixes:
- Fix kubernetes get-file and put-file task.
- Update readme and document how to create a release and publish the docs
- Update vuepress
Jump to heading 3.5.15 / 2020-09-18
Jump to heading Fixes:
- Remove
-q
option from ssh command as this prevents sshs error reporting
Jump to heading New:
- Provide computed property
kubectlOptionsCombined
for use in scripts to use the same cli-options as phab does
Jump to heading 3.5.14 / 2020-09-16
Jump to heading Fixed:
execute()
will now properly respect breakOnFirstError which got ignored in the past- Fix docs regarding
log_message
(Fixes #100)
Jump to heading 3.5.13 / 2020-09-15
Jump to heading New:
- Allow script question values to be overridden via
--arguments
- Add tests for scaffold command
- Allow questions for scripts
- Allow computedValues for scripts, this will allow the user to eecute external commands and reuse their results.
log_message
supported for scriptsconfirm(message)
supported for scaffolder and scripts.- Enhance parsing of arguments for internal commands when used in the scaffolder or script. This is now possible:
log_message("hello, dear user! Welcome!", "success")
Jump to heading Changed
- HostConfigs with
inheritOnly
wont be listed when runninglist:hosts
- The scaffolder will use/ create a token-cache file only when requested with
--use-cached-tokens
Jump to heading 3.5.12 / 2020-09-09
Jump to heading New:
- Implement
start-remote-access
for k8s
Jump to heading Fixed:
- Remove fragile context handling in k8s, instead use dedicated command-line argument
Jump to heading 3.5.11 / 2020-09-08
Jump to heading New:
- Add support for .env files on the same level as the .fabfile. Will be included in global scope under the key
environment
Jump to heading Fixed:
- Forget cached
podForCli
after deployment to acquire a new one, addsettings
to the replaceents - Update dependencies
Jump to heading 3.5.10 / 2020-09-08
Jump to heading New:
- Add
assert_file
internal command for scaffold-scripts to check if a specific file exists.
Jump to heading Fixed:
- Silence ssh process a bit more, might fix #98
- Proper parsing and applying of single quotes to commands. Fixes #81
- If no tty is requested do not attach stdin to process, so it wont wait for input. Fixes #98
- Bump symfony/http-kernel from 4.4.7 to 4.4.13
Jump to heading 3.5.9 / 2020-08-31
Jump to heading Fixed:
- Fix wrong npmRootFolder when using artifact based deployment, modularize the logic
Jump to heading 3.5.8 / 2020-08-26
Jump to heading Fixed:
- Revert newly introduced idle-prevention when running scripts as it breaks execution under certain circumstances
Jump to heading 3.5.7 / 2020-08-25
Jump to heading New:
- Do pattern replacement dynamically for k8s
- Rework kubectl execution, you can now add options to the command and set a dedicated kubeconfig in the fabfile
Jump to heading Fixed:
- Fix broken workspace:create and workspace:update commands due to recent refactoring. Add test coverage for both commands
- Refactor tunnel creation into dedicated classes and helpers
Jump to heading 3.5.6 / 2020-08-22
Jump to heading New:
- Allow to set environment variables in the kubectl context, e.g for KUBECONFIG
Jump to heading Fixes:
- Make sure that drush operates in the correct sitefolder when pulling or pushing variables
- Smaller doc fixes
Jump to heading 3.5.5 / 2020-08-18
Jump to heading New:
- Add support for switching context before running kubectl
Jump to heading 3.5.4 / 2020-08-17
Jump to heading New:
- Allow optional script context definition of a script, this will allow to execute the script in a different context, eg in the context of the kubectl shell
Jump to heading 3.5.3 / 2020-08-11
Jump to heading Fixed:
- Fix broken workspace:create and workspace:update commands due to recent refactoring. Add test coverage for both commands
Jump to heading 3.5.2 / 2020-08-07
Jump to heading Fixed:
- Chunk regex patterns to prevent warning and failing replacements
- Provide default command result
Jump to heading 3.5.1 / 2020-08-04
Jump to heading Fixed:
- Fix a warning when running scaffold without scripts
- Force-include twig dependencies when building phar
Jump to heading 3.5.0 / 2020-08-04
Jump to heading Fixed:
- Fix error in fallback version check, fixes #93
Jump to heading New:
- Support for kubernetes, see documentation for more details. Some features still missing.
- Add describe subcommand for k8s
- Add logs subcommand for k8s
- Implement copy operation for k8s
- Add docs for kubernetes, fix test
- Allow the passing of a shellprovider to the scaffolder, reorganize code a little bit
- Add new k8s subcommand rollout, wait for deployments to finish before continuing
- Apply kubernetes config on deploy, even when scaffolder is not used, smaller code enhancements
- Rename deployCommand to applyCommand, add delete subcommand to k8s method
- Add new option
set
which allows to set a certain value in the configuration - Provide host data and timestamp for scaffolder
- Add kubectl shellprovider, fix some bugs in K8sMethod
- Add k8s subcommands
- Implement initial deploy command for k8s
- Fix replacements in k8s
- Start working on k8s method, refactoring scaffold functionality into dedicated class with dedicated options class
- Bump elliptic from 6.5.2 to 6.5.3
- Bump lodash from 4.17.15 to 4.17.19
- Disable symfony recipes
- Show available update even on linux
Jump to heading 3.4.9 / 2020-07-24
Jump to heading Fixed:
- Harden the extraction of return codes for executed commands
Jump to heading 3.4.8 / 2020-07-16
Jump to heading Fixed:
- Clean up any cached docker container name after a task got executed. Fixes #89
- Add php codesniffer as dev dependency
- Show available update even on linux
Jump to heading 3.4.7 / 2020-06-29
Jump to heading Fixed:
- Fix ensureKnownHosts
Jump to heading 3.4.6 / 2020-06-29
Jump to heading Fixed:
- Ensure known hosts for ssh shells, some refactoring
- Fix smaller bugs in scaffolder
- Bump websocket-extensions from 0.1.3 to 0.1.4
- Throw an exception with the filename if transform plugin throws an exception, improve logging
Jump to heading New:
- Refactor Scaffoldbase to use a QuestionFactory with new types of questions
- Enhance validation service
- Pass files parameter directly to transformer
Jump to heading 3.4.5 / 2020-05-18
Jump to heading Fixed:
- Fix docker-exec-over-ssh
Jump to heading 3.4.4 / 2020-05-18
Jump to heading New:
- New shellprovider: docker-exec-over-ssh, its a concatenated shell running docker-exec on a remote instance
Jump to heading Fixed:
- Prevent folder name collision if two artifact deployements are runing at the same time
- Fix app:create when using a service for docker ip gathering
- Fix for inherit loops, fixes #78
- Allow per host repository settings
Jump to heading 3.4.3 / 2020-04-29
##Fixed
- Previous versions did not check the version constraints of imported yaml files.
Jump to heading 3.4.2 / 2020-04-28
Jump to heading New
- Allow per host repository settings
Jump to heading 3.4.1 / 2020-04-25
Jump to heading Fixed
- Fix for non-working plugin autoloader when using bundled as phar
Jump to heading 3.4.0
Jump to heading New
- Support override-mechanism. If a yaml-file with the extension
override.yml
oroverride.yaml
exists, its data will be merged with the original file. - Add ip option to start-remote-access command to connect to a specific host
- Initial implementation of
variable:pull
andvariable:push
for D7 via drush - add new command
scaffold
which allows to scaffold and transform not only apps but also other types of files. - Introducing plugin mechanism to add functionality via external php files for the scaffolder. Will be used by
phab-entity-scaffolder
- Use static array of discovered transformers, to fix unit testing, as php does not allow to discover a php-class multiple times
- Add logging to plugin discovery
- Fix options with multiple values
- Implement better approach to find vendor-folder
- Expose target_path to transformers
- Make sure, that only yaml files get transformed
- Use global autoloader, so registering new namespaces are permanent
- Use autoloader to register plugin classes
- Refactor scaffold callbacks in dedicated classes, so they can be externally loaded
- First draft of a plugin mechanism to decouple scaffolding from phabalicious, as an effort to port entityscaffolder to d8
- Support for knownHosts. Setting
knownHosts
for a host- or dockerHost-configurtion will make sure, that the keys for that hosts are added to the known_hosts-file. - Update known_hosts before specific commands, needs possibly more work #70
Jump to heading Changed
- Remove entity-updates option during drush reset
- Better error message for missing arguments
- Refactor task context creation to allow arguments for all commands
- Upgrade vuepress dependencies
- Update dependencies
- Update docs
Jump to heading Fixed
- Satisfy PHP 7.2
- Document yarnRunContext and npmRunContext
- Fix regression with script default arguments, added test-case. Fixes #77
- Fix exclude action for git artifact deployments #73
- Fix race condition on app:create
- Remove deprecated code
- If the underlying shell terminates with an exit code, throw an exception
- Use a different name for the target filename to prevent name-clashes
- Fix version command, nicer output
Jump to heading 3.3.5 / 2020-03-02
Jump to heading Fixed
- limit amount of commit messages to 20 when doing artifacts deployment
Jump to heading 3.3.4 / 2020-01-21
Jump to heading Fixed
- Skip precommit hooks for committing artifacts
- Silence a warning, if shell exits unexpectedly throw exception only on error
Jump to heading 3.3.3 / 2020-01-15
Jump to heading Fixed
- Add new internal method to modify a json file when scaffolding.
- New option
skipSubfolder
, so that scaffold wont create a subfolder. - Update vuepress
Jump to heading 3.3.1 / 2020-01-06
Jump to heading Fixed:
- Fixed a bug inheriting the target branch from the source branch
Jump to heading 3.3.0 / 2020-01-03
Jump to heading New:
- New command
workspace:create
, which will run the multibasebox scaffolder - Add
workspace:update
command and refactor scaffold code - scaffolder will store tokens in
.phab-scaffold-tokens
in the scaffolded folder. Subsequent scaffold-runs will load and use these tokens (and do not ask for them) - when scaffolding a project the warning that the target folder exists can be suppressed by adding
allowOverride: 1
to the variables-section. - Add coding-style standards config file, apply them.
Jump to heading 3.2.15 / 2019-12-30
Jump to heading Changed/ New
- Refactor composer command to a base class, so functionality can be shared with new commands yarn and npm
- Drush will try to run an install, even when no database-settings were found in the current host-config.
Jump to heading 3.2.14 / 2019-12-19
Jump to heading Fixed:
- Add support for Drupal 8.8 and changed behavior regarding config-sync
Jump to heading 3.2.13 / 2019-12-15
Jump to heading Fixed:
- Pass arguments to subsequent commands
- If a replacement can't be parsed, throw an exception
Jump to heading 3.2.12 / 2019-12-14
Jump to heading Fixed:
- Fix php declaration error
Jump to heading 3.2.11 / 2019-12-14
Jump to heading Fixed:
- Allow arguments for the docker command, merge scripts variables instead of replacing them
Jump to heading 3.2.10 / 2019-12-12
Jump to heading Fixed:
- Fix error when deleting existing files in copyAction
Jump to heading 3.2.9 / 2019-12-11
Jump to heading Fixed:
- Harden handling of getting actual container name from a service
Jump to heading 3.2.8 / 2019-12-10
Jump to heading Fixed
- Harden behavior of committing artifacts.
Jump to heading 3.2.7 / 2019-12-06
Jump to heading New/Fixed:
- Ignore ssl errors when running tests'
- Better way of handling relative paths in LocalShell
- Refactor RunCommandBase to define a runContext. Could be host, or dockerHost
- Bump symfony/http-foundation from 4.2.3 to 4.4.1
Jump to heading 3.2.6 / 2019-12-01
Jump to heading Fixed:
- Fix branch handling in deploy command
Jump to heading 3.2.5 / 2019-12-01
Jump to heading New:
- Add preliminary documentation for webhooks
- Allow methods to alter script callbacks
- Add test for task-specific webhooks
- Implement new command
webhook
which allows the user to invoke a webhook defined in a fabfile.
Jump to heading Fixed:
- Fix non-working branch argument-handling, old code did not respect the argument at all
Jump to heading 3.2.4 / 2019-11-23
Jump to heading New:
- Add dedicated
npm
method, similar to yarn-method.
Jump to heading Fixed:
- Issue #62: Switch to using single -m for commit message
Jump to heading 3.2.3 / 2019-11-18
Jump to heading Fixed:
- Fixed a security alert in a symfony dependency
Jump to heading 3.2.2 / 2019-11-14
Jump to heading New:
- new method
yarn
, which will run yarn install on install/reset task and a custom build command when running the reset-task - new custom build artifact available, with full control over the stages
Jump to heading Fixed:
- Require grumphp only for dev
- Use latest grumphp
- Update precommit config
- Report script errors early
- Delete target file/folder before copying
- Tag build artifact with existing tag of source repository
- Disregard confirm action if --force option is set
- Fix tests and keep option
override
- Fix possible exception, when using -v show possible tokens
- Allow multiple options '--arguments'
- Allow --arguments for deploy command
- Refactor actions, add new action installScript
- Set the type as
installation_type
as state in drupal 8
Jump to heading 3.2.1 / 2019-10-14
Jump to heading Fixed:
- Include version number for temporary folder
Jump to heading 3.2.0 / 2019-10-14
Jump to heading New:
rootFolder
is set by default now to the folder where the fabfile is located.- All context variables are exposed as replacement patterns for using in scripts.
- new method
artifacts--git
to build an artifact and push it to a git repository, see new documentation about artifacts. - Update documentation regarding the new artifact workflow
Jump to heading Changed
- Refactored and renamed method
ftp-sync
toartifacts--ftp
in preparation of artifacts--git. Be aware that you might need to change existing configuration!
Jump to heading 3.1.0 / 2019-09-27
Jump to heading New
- Switched to vuepress as documentation tool
Jump to heading 3.1.0-beta.1 / 2019-09-14
Jump to heading New
- Get drush command to dump sql from configuration
- Allow environment for host-configs, fixes #56
- Support replacements for host-environment variables
Jump to heading Fixed
- Refactor tests, so they can be run from root foldergit
- Push and restore working dir
- Fix build script regarding not enough file handles
Jump to heading 3.0.22 / 2019-09-12
Jump to heading New
- Add support sql-sanitize for reset task
Jump to heading Fixed
- Fix for exception after certain docker commands.
Jump to heading 3.0.21 / 2019-08-21
Jump to heading Fixed
- Document
skipCreateDatabase
- Add chmod to the list of executables, fixes #57
Jump to heading 3.0.20 / 2019-07-07
Jump to heading Fixed
- Show error-message if shell could not be initialized. Fixes #54
- Satisfy phpstan and add it as a new precommit-hook
- Fix drush and other commands when using local shell provider
- Prevent filename collision when running docker copySSHKeys, fixes #52
- Fix issue with special characters in the pw
- Use latest version of stecman/symfony-console-completion
Jump to heading 3.0.19 / 2019-06-25
Jump to heading Fixed
- Fix warning
- Better errorhandling
Jump to heading 3.0.18 / 2019-06-18
Jump to heading Fixed
- Smaller enhancements regarding scaffolding
- Sleep only when shell did not produce any output
Jump to heading 3.0.16 / 2019-06-09
Jump to heading Fixed
- Fix introduced regression when running a drush command
Jump to heading 3.0.15 / 2019-06-07
Jump to heading Changed
- Enhance support for docker shells
- Rework shell execution for docker-exec
- Allow relative paths for docker rootFolder. Add sleep to reduce processor drain
Jump to heading Fixed:
- Fix default values
Jump to heading 3.0.14 / 2019-05-28
Jump to heading Fixed
- Fix bug with variants overriding existing configuration
Jump to heading 3.0.12 / 2019-05-27
Jump to heading Fixed
- Run composer install on
installPrepare
Jump to heading 3.0.11 / 2019-05-19
Jump to heading Fixed
- Fix bug when using inheritsFromBlueprint
Jump to heading 3.0.10 / 2019-05-19
Jump to heading Added
-
Add new inheritFromBlueprint config, so a host-config can inherit from a blueprinted config
hosts: local: inheritFromBlueprint: config: <config-which-contains-blueprint> variant: <the-variant>
Thats roughly the same as calling
phab --config=<config-which-contains-blueprint> --blueprint=<the-variant>
but using it in the fabfile allows you to override the config if needed. -
Introduce deprecated-flag for inherited data. Will display a warning, when found inside data
-
Enhance output-command to support output of docker-, host- and applied blueprint config, and also of all global data.
phab -clocal output --what host # will output the complete host-config phab -cremote output --what docker # will output the complete docker-host config phab output --what global # will output all global settings
Jump to heading 3.0.9 / 2019-05-11
Jump to heading Fixed
- Add validation for foldernames
- Harmonize option copy-from
Jump to heading 3.0.8 / 2019-05-10
Jump to heading Fixed
- Use correct port range, previous code might have used ephemeral ports, which are reserved -- should fix sporadically failing ssh-connections, fixes #49
Jump to heading 3.0.7 / 2019-05-01
Jump to heading Fixed
- Show a warning if local users' keyagent does not have a key when running
docker copySSHKeys
Jump to heading 3.0.6 / 2019-04-25
Jump to heading Fixed
- rename setting
dockerAuthorizedKeyFile
todockerAuthorizedKeysFile
, keep the old one for backwards compatibility - if no dockerAuthorizedKeysFile is set, use the public-keys of the ssh-agent instead
- Cd into siteFolder before restoring a db-dump. (Fixes #48)
- Ask before scaffolding into an existing directory, can be overridden by
--force
. Fixes #43 - Allow --force and --force 1
- Report errors and stop the execution when errors happen while scaffolding
- Use latest version of stecman/symfony-console-completion
- Enable/ disable modules one by one, fixes #39
- Better error-reporting for inherited files from local and remote
- Handle variants and error output better
- Allow the phab binary to called from a regular Composer installation
- Add the "phab" binary to composer.json explicitly
- Update passwords documentation
Jump to heading 3.0.5 / 2019-04-17
Jump to heading Fixed
- Cd into siteFolder before restoring a db-dump. (Fixes #48)
Jump to heading 3.0.4 / 2019-03-18
Jump to heading New
- Support for variants and parallel execution for a set of variants
Jump to heading Fixed
- Document mattermost integration, fixes #29
- Fix broken shell autocompletion
- Limit output when using phab with pipes
- Include jump-host when running ssh:command if needed (fixes #36)
- Display destination for put:file (Fixes #37)
Jump to heading 3.0.3 / 2019-03-07
Jump to heading Fixed
- Use progressbar when scaffolding more then 3 asset-files
- FIx a regression for task-specific scripts. (Fixes #31)
- Make sure, that task-specific scripts are run. (Fixes #31)
- Add a notification before starting a db dump (Fixes #30 and #33)
- If no unstable update is available, try the stable branch (Fixes #34)
Jump to heading 3.0.2 / 2019-03-01
Jump to heading Fixed
- Fix scaffolding of empty files via http
- Add support to limit files handled by twig by an extension as third parameter to copy_assets
- Add support for a dedicated projectFolder, add support for dependent variables, so you can compose variables from other variables
- strip first subfolder from filenames to copy when running app:scaffold, keep folder hierarchy for subsequents folders
- Refactor TaskContext::getStyle to TaskContext::io for clearer code
- Fix a bug on copyFrom for specific multi.site setups
- Fix bug when running app:scaffold where stages do not fire existing docker-tasks
Jump to heading 3.0.1 / 2019-02-25
Jump to heading Fixed
- Fix a bug in docker:getIpAddress when using the service keyword and the container is not running.
Jump to heading New
- Add a new stage
prepareDestination
forapp:create
Jump to heading 3.0.0 / 2019-02-14
Jump to heading Fixed
- Increase timeout for non-interactive processes.
restore:sql-from-file
: Run a preparation method so tunnels are in place before running the actual scpcopy-from files
: Fix for "too many arguments" error message of rsync
Jump to heading 3.0.0-beta.6 / 2019-02-08
Jump to heading Fixed
- .netrc is optional, show a warning if not found, instead of breaking the flow (Fixes #27)
Jump to heading 3.0.0-beta.5 / 2019-02-05
Jump to heading Fixed
- fixes a bug resolving remote assets for app:scaffold
Jump to heading 3.0.0-beta.4 / 2019-01-28
Jump to heading Fixed
- Exit early after app-update to prevent php exception because of missing files. (Fixes #24)
- Make update-check more robust
Jump to heading 3.0.0-beta.3 / 2019-01-26
Jump to heading New
- Add transform to questions, update documentation, fix tests
- Refactor questions in
app:scaffold
questions are now part of the scaffold.yml - Add support for copying a .netrc file to the docker container
- New command
jira
which will show all open tickets for the given project and user. (#22)
Jump to heading 3.0.0-beta.2 / 2019-01-19
Jump to heading New
- Add support for .fabfile.local.yaml in user-folder
- Show a message when a new version of phabalicious is available.
Jump to heading Fixed
- Documentation for the new jira-command (#22)
- Remove trailing semicolon (Fixes #23)
- Report a proper error message when handling modules_enabled.txt or modules_disabled.txt is failing
- Fix shell-completion
Jump to heading 3.0.0-beta.1 / 2019-01-10
Jump to heading fixed
- Fix logic error in InstallCommand, add testcases (Fixes #21)
- Wrap interactive shell with bash only if we have a command to execute
- Try up to 5 parent folders to find suitable fabfiles (Fixes #18)
- Use paralell uploads for ftp-deployments
- Use a login-shell when running drush or drupalconsole interactively. (Fixes #20)
- Add autocompletion for
install-from
Jump to heading 3.0.0-alpha.8 / 2018-12-20
Jump to heading fixed
- Call overridden methods only one time, add missin reset-implementation to platform-method (fixes #14)
- Increase verbosity of app:scaffold
- Add missing twig-dependency to phar-creation (fixes #17)
- Fix handling of relative paths in app:scaffold (Fixes #16)
- Fix parsing of multiple IPs from a docker-container (Fixes #15)
- Pass available arguments to autocompletion for command copy-from (Fixes #13)
- Run drupalconsole in an interactive shell
Jump to heading 3.0.0-alpha.7 / 2018-12-14
Jump to heading fixed
- Handle app-options correctly when doing shell-autocompletion (Fixes #12)
- Silent warnings when doing autocompletion (fixes #11)
- Better command output for start-remote-access (fixes #10)
- Throw exception if docker task fails
- Fix command output parsing
- Source /etc/profile and .bashrc
- Better defaults for lftp
Jump to heading 3.0.0-alpha.6 / 2018-12-11
Jump to heading fixed
- Some bugfixes for ftp-deployments
- Nicer output
- Add docs for shell-autcompletion
- Fix fish autocompletion (sort of)
- Set version number, when not bundling as phar
Jump to heading 3.0.0-alpha.5 / 2018-12-08
Jump to heading fixed
- Use real version number
- Fix phar-build
Jump to heading 3.0.0-alpha.4 / 2018-12-08
Jump to heading new
- New command
self-update
, will download and install the latest available version - New method
ftp-sync
to deploy code-bases to a remote ftp-instance - Introduction of a password-manager for retrieving passwords from the user or a special file
Jump to heading changed
- Switch to box for building phars
Jump to heading fixed
- Do not run empty script lines (Fixes #8)
- Set folder for script-phase
- Set rootFolder fot task-specific scripts
- Support legacy host-types
Jump to heading 3.0.0 develop
Fabalicious is now rewritten in PHP, so we changed the name to make the separation more clear. Phabalicious is now a symfony console app and uses a more unix-style approach to arguments and options. E.g. instead of config:<name-of-config>
use --config=<name-of-config>
Jump to heading Why the rewrite
Python on Mac OS X is hard, multiple versions, multiple locations etc. Every machine needed some magic hands to get fabalicious working on it. Fabalicious itself is written in python 2.x, but the world is moving on to python 3. Fabric, the underlying lib we used for fabalicious is also moving forward to version 2 which is not backwards compatible yet with fabric 1. On the other side we are now maintaining more and more containerized setups where you do not need ssh to run commands in. A popular example is docker and its whole universe. Fabric couldn't help us here, and fabric is moving into a different direction.
And as a specialized Drupal boutique we write PHP all day long. To make it easier for our team to improve the toolset by ourselves and get help from the rest of the community, using PHP/ Symfony as a base for the rewrite was a no-brainer.
Why not use existing tools, like robo, deployer or other tools? These tools are valuable instruments in our tool-belt, but none of them fit our requirements completely. We see phabalicious as a meta-tool integrating with all of them in nice and easy way. We need a lot of flexibility as we need to support a lot of different tech- and hosting-stacks, so we decided to port fabalicious to phabalicious.
There's a lot of change going on here, but the structure of the fabfile.yaml is still the same.
Jump to heading Changed command line options and arguments
As fabric (the underlying lib we used for fabalicious) is quite different to symfony console apps there are more subtle changes. For example you can invoke only one task per run. With fabalicious it was easy to run multiple commands:
fab config:mbb docker:run reset ssh
This is not possible anymore with phabalicious, you need to run the commands in sequence. If you need that on a regular basis, a script
might be a good workaround.
Most notably the handling of arguments and options has changed a lot. Fabric gave us a lot of flexibility here, symfony is more strict, but has on the other side some advantages for example self-documenting all possible arguments and options for a given task.
Jump to heading Some examples
Old syntax | New syntax |
---|---|
fab config:mbb about |
phab about --config mbb |
fab config:mbb about |
phab --config=mbb about |
fab config:mbb blueprint:de deploy |
phab deploy --config mbb --blueprint de |
fab config:mbb blueprint:de deploy |
phab --config=mbb --blueprint=de mbb |
Jump to heading New features
-
Introduction of ShellProviders, they will provide a shell, to run scripts into. Currently implemented are
local
, run the shell-commands on your local hostssh
, runs the shell-commands on a remote host.
Every shell-provider can have different required options. Currently add the needed shell-provider to your list of needs, e.g.
needs: - local - git - drush
-
new global settings
disableScripts
which will not add thescript
-method to the needs. -
there's a new command to list all blueprints:
list:blueprints
-
new shell-provider
dockerExec
which will start a shell with the help ofdocker exec
instead of ssh. -
new config-option
shellProvider
, where you can override the shell-provider to your liking.hosts: mbb: shellProvider: docker-exec
-
You can get help for a specific task via
phab help <task>
. It will show all possible options and some help. -
docker-compose version 23 changes the schema how names of docker-containers are constructed. To support this change we can now declare the needed service to compute the correct container-name from.
hosts: testHost: docker: service: web
The
name
will be discarded, if aservice
-entry is set. -
new method
ftp-sync
, it's a bit special. This method creates the app into a temporary folder, and syncs it vialftp
to a remote instance. Here's a complete example (most of them are provided via sensible defaults):excludeFiles: ftp-sync: - .git/ - node_modules hosts: ftpSyncSample: needs: - git - ftp-sync - local ftp: user: <ftp-user> password: <ftp-password> # host: <ftp-host> port: 21 lftpOptions: - --ignoreTime - --verbose=3 - --no-perms
You can add your password to the file
.phabalicious-credentials
(see passwords.md) so phabalicious pick it up.
Jump to heading Changed
-
docker:startRemoteAccess
is now the taskstart-remote-access
as it makes more sense. -
the
list
-task needed to be renamed tolist:hosts
. -
the
--list
task (which was built into fabric) is nowlist
. -
the
offline
-task got removed, instead add the-offline
-option and set it to 1, e.g.phab --offline=1 --config=mbb about
-
the task
logLevel
is replaced by the builtin-v
-option -
autocompletion works now differently than before, but now bash and zsh are supported. Please have a look into the documentation how to install it.
-
for fish-shells
phab _completion --generate-hook --shell-type fish | source
-
for zsh/bash-shells
source <(phab _completion --generate-hook)
-
-
listBackups
got renamed tolist:backups
-
backupDB
andbackupFiles
got removed, usephab backup files
orphab backup db
, the same mechanism works for restoring a backup. -
getFile
got renamed toget:file
-
putFile
got renamed toput:file
-
getBackup
got renamed toget:backup
-
getFilesDump
got renamed toget:files-backup
-
getProperty
got renamed toget:property
-
getSQLDump
got renamed toget:sql-dump
-
restoreSQLFromFile
got renamed torestore:sql-from-file
-
copyDBFrom
got renamed tocopy-from <config> db
-
copyFilesFrom
got renamed tocopy-from <config> files
-
installFrom
got renamed toinstall:from
Jump to heading Deprecated
- script-function
fail_on_error
is deprecated, usebreakOnFirstError(<bool>)
runLocally
is deprecated, add a new needlocal
to the lists of needs.strictHostKeyChecking
is deprecated, usedisableKnownHosts
instead.getProperty
is deprecated and got renamed toget-property
ssh
is deprecated and got renamed toshell
as some implementations might not use ssh.sshCommand
is deprecated and got renamed toshell:command
and will return the command to run a shell with the given configuration- the needs
drush7
,drush8
anddrush9
are deprecated, use the needdrush
and the newly introduced optionsdrupalVersion
anddrushVersion
instead, - the
slack
-configuration got removed and got replaced by a general notification solution, currently only with a mattermost implementation.