Up to date thanks to jonaswouters
###Description
- Deploy your project usinc rsync (must be installed) in ssh mode.
- Setup deployment on many servers.
- Easily create rules for rsync (ignore / force files).
- Schedule commands to run on ditant server via ssh (SSH2 PHP extension required).
###Links
- Stable releases : https://github.com/besimple/DeploymentBundle
- Nightly builds : https://github.com/jfsimon/DeploymentBundle
- Rest documentation : will come later
###Requirements
- Rsync package : http://samba.anu.edu.au/rsync/
- SSH2 extension : http://fr.php.net/manual/en/book.ssh2.php
- 
Get the sources via GIT - 
Use clone method if not using GIT for your project git clone git://github.com/besimple/DeploymentBundle.git vendor/BeSimple/DeploymentBundle 
- 
Use submodule method if this is the case git submodule add git://github.com/besimple/DeploymentBundle.git vendor/BeSimple/DeploymentBundle 
 
- 
- 
Register bundle in AppKernelclass// app/AppKernel.php $bundles = array( // ... new BeSimple\DeploymentBundle\BeSimpleDeploymentBundle(), // ... );
- 
Add besimple_deploymententry to your config file# app/config.yml be_simple_deployment: rsync: ~ ssh: ~ rules: ~ commands: ~ servers: ~
- 
Add BeSimplenamespace to autoload// app/autoload.php $loader->registerNamespaces(array( // ... 'BeSimple' => __DIR__.'/../vendor', // ... ));
###An example
be_simple_deployment:
    rsync:
        delete:       true
    ssh:
        pubkey_file:  /home/me/.ssh/id_rsa.pub
        privkey_file: /home/me/.ssh/id_rsa
        passwphrase:  secret
    rules:
        eclipse:
            ignore:   [.settings, .buildpath, .project]
        git:
            ignore:   [.git, .git*, .svn]
        symfony:
            ignore:   [/app/logs/*, /app/cache/*, /web/uploads/*, /web/*_dev.php]
    commands:
        cache_warmup:
            type:     symfony
            command:  cache:warmup
        fix_perms:
            type:     shell
            command:  ./bin/fix_perms.sh
    servers:
        staging:
            host:     localhost
            username: login
            password: passwd
            path:     /path/to/project
            rules:    [eclipse, symfony]
            commands: [cache_warmup, fix_perms]
        production:
            # ...
###Rsync configuration
To be continued.
###SSH configuration
To be continued.
###Rules configuration
Rules can be declared as templates for reuse in your servers configuration. Some templates are already bundled by default. The following parameters can be used :
- ignore : masks for the files to be ignored
- force : ignored files can be forced this way
###Servers configuration
Here is the full list of parameters :
- host :
- rsync_port :
- ssh_port :
- username
- password :
- path : the path for your application root on the remote server
- rules : list of rules templates to apply
- commands : list of commands to trigger on destination server
###Using the commands
The simpliest way to deploy your application is to use the command line, go into your project root folder and type the following commands :
# Test your deployment :
./app/console deployment:test [server]
# Launch your deployment :
./app/console deployment:launch [server]
You can use the verbose option (-v) to get all feedback from rsync and
remote ssh commands.
###Using the service
You can also use the deployment feature within your controller by invoking the 'deployment' service :
// Test your deployment :
$this->get('besimple_deployment')->test([$server]);
// Launch your deployment :
$this->get('besimple_deployment')->launch([$server]);
You can connect many events to know what's happening.
###Deployer events
- onDeploymentStart : fired on deployment start.
- onDeploymentSuccess : fired on deployment success.
###Rsync events
- onDeploymentRsyncStart : fired when rsync is started.
- onDeploymentRsyncFeedback : fired on each rsync stdoutorstderrline.
- onDeploymentRsyncSuccess : fired on rsync success.
###SSH events
- onDeploymentSshStart : fired when SSH command run.
- onDeploymentSshFeedback : fired on each SSH stdoutorstderrline.
- onDeploymentSshSuccess : fired on SSH command success.