CLI Usage
We recommend adding the following alias to your .bashrc file:
alias dep='vendor/bin/dep'
It is also recommended to install the completion script for Deployer. Completion supports:
- tasks,
- options,
- host names,
- and configs.
For example, on macOS run the following commands:
brew install bash-completion
dep completion bash > /usr/local/etc/bash_completion.d/deployer
Overriding configuration options
For example, if your deploy.php file contains this configuration:
set('ssh_multiplexing', false);
And you want to enable ssh multiplexing without modifying the recipe, you can pass the -o
option to the dep
command:
dep deploy -o ssh_multiplexing=true
To override multiple config options, you can pass multiple -o
args:
dep deploy -o ssh_multiplexing=true -o branch=master
Running arbitrary commands
Run any command on one or more hosts:
dep run 'uptime -p'
Tree command
Deployer supports task grouping and before/after hooks. To visualize the task hierarchy, use the dep tree command.
$ dep tree deploy
The task-tree for deploy:
└── deploy
├── deploy:prepare
│ ├── deploy:info
│ ├── deploy:setup
│ ├── deploy:lock
│ ├── deploy:release
│ ├── deploy:update_code
│ ├── build // after deploy:update_code
│ ├── deploy:shared
│ └── deploy:writable
├── deploy:vendors
├── artisan:storage:link
├── artisan:config:cache
├── artisan:route:cache
├── artisan:view:cache
├── artisan:migrate
└── deploy:publish
├── deploy:symlink
├── deploy:unlock
├── deploy:cleanup
└── deploy:success
Execution plan
Before executing tasks, Deployer needs to flatten the task tree and decide in which order it will be executing tasks
on which hosts. Use the --plan
option to output a table with tasks/hosts:
$ dep deploy --plan all
┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐
│ prod01 │ prod02 │ prod03 │ prod04 │
├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤
│ deploy:info │ deploy:info │ deploy:info │ deploy:info │
│ deploy:setup │ deploy:setup │ deploy:setup │ deploy:setup │
│ deploy:lock │ deploy:lock │ deploy:lock │ deploy:lock │
│ deploy:release │ deploy:release │ deploy:release │ deploy:release │
│ deploy:update_code │ deploy:update_code │ deploy:update_code │ deploy:update_code │
│ build │ build │ build │ build │
│ deploy:shared │ deploy:shared │ deploy:shared │ deploy:shared │
│ deploy:writable │ deploy:writable │ deploy:writable │ deploy:writable │
│ deploy:vendors │ deploy:vendors │ deploy:vendors │ deploy:vendors │
│ artisan:storage:link │ artisan:storage:link │ artisan:storage:link │ artisan:storage:link │
│ artisan:config:cache │ artisan:config:cache │ artisan:config:cache │ artisan:config:cache │
│ artisan:route:cache │ artisan:route:cache │ artisan:route:cache │ artisan:route:cache │
│ artisan:view:cache │ artisan:view:cache │ artisan:view:cache │ artisan:view:cache │
│ artisan:migrate │ artisan:migrate │ artisan:migrate │ artisan:migrate │
│ deploy:symlink │ - │ - │ - │
│ - │ deploy:symlink │ - │ - │
│ - │ - │ deploy:symlink │ - │
│ - │ - │ - │ deploy:symlink │
│ deploy:unlock │ deploy:unlock │ deploy:unlock │ deploy:unlock │
│ deploy:cleanup │ deploy:cleanup │ deploy:cleanup │ deploy:cleanup │
│ deploy:success │ deploy:success │ deploy:success │ deploy:success │
└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘
The deploy.php:
host('prod[01:04]');
task('deploy:symlink')->limit(1);
The runLocally
working dir
By default, runLocally()
commands are executed relative to the recipe file directory.
This can be overridden globally by setting an environment variable:
DEPLOYER_ROOT=. dep taskname`
Alternatively, the root directory can be overridden per command via the cwd configuration.
runLocally('ls', ['cwd' => '/root/directory']);
Play blackjack
Yeah, well. I'm gonna go build my own theme park... with blackjack and hookers!
In fact, forget the park!
— Bender
dep blackjack