Go is a easy-to-use PHP deployment manager
But… Don't use it, it never pass the status of experiment. Use Deployer, Fabric or Capistrano. But not this thing. Please.
This tool is experimental, so there is no installation process for now.
You must clone the application and link it to your path:
$ cd
$ git clone [email protected]:Nek-/Go.git
$ sudo ln -vs ~/Go/go /usr/bin/go
$ sudo chmod +x ~/Go/go
$ go init [config dir]
This will create all the files needed by go to deploy your application.
Edit the deploy.yml and Deploy.php files in your config dir (config/go by default)
$ go deploy [environment] [--go]
Use the [--go] option to process to the real deployment.
Go supports multiple deployment strategies. For now, there's two :
- Rsync
- Deploys your code in a remote directory via rsync
- VersionedRsync
- Like Rsync but puts code into a subdirectory (no `ln`, you can do it :))
Go uses the (alpha) OOSSH lib, and allows you to run commands on your remote server. The available methods are, in the Deploy.php class :
$this->remoteExec($command);
$this->sudo($command);
$this->symlink($from, $to);
$this->copy($from, $to, $recursive = false);
Note that the copy commands call cp -p
and preserves owners, groups, and horodating.
The classic usage of it is in the pre/post deploy commands (needs to clean cache ?)
You can execute some code before and/or after your deployment by overriding the pre/postDeploy methods tour {config_dir}/Deploy.php.
These methods are also env-duplicated. If your environment is production
you can override pre/postDeployProduction.
These methods takes a $go
boolean as parameter to execute or not some commands when dry-run.
you can have (a bit of) help about go commands by typing
$ go help [command]
You can also mail me at [email protected]