- Fixed a similar bug during the "live" step.
- Fixed a bug where the release ID was not passed into the script compiler correctly. Some script tags would not return the correct release path.
- Attache will now first check that an asset exists before trying to copy to the target server.
- Attache will no longer halt when a new SSH key has been added.
- The timeout for all process has been substantially increased to 3600 seconds to cater for long running deployments.
- The configuration requires the
server
config setting has been changed from an array of objects to an object of servers keyed by their names. - The
name
server config attribute has been removed. - Added a new
--branch
option to thedeploy
andinstall
commands.
- The
before-prep-composer
andafter-prep-composer
script hooks have been renamed tobefore-prepcomposer
andafter-prepcomposer
respectively.
- Added two new script tags:
@root
points to the project root on the server. There is now a@path
tag which takes one parameter. So@path:releases
will give you the project releases path. - The
deploy
command will now check if an installation is present. If not, it will fail and exit. An installation must be completed first.
- Fixed a bug in the script compiler that was not able to fetch the latest release ID since scripts are compiled BEFORE connecting to the server. The release ID is now passed into the compiler.
- The
install
command will now attempt to create the project root directory with amkdir -p
command.
- Fixed a bug in the
init
command that wasn't locating the Git config correctly and wasn't setting the default remote URL. - Fixed a bug in the
init
command that was not setting the Git remote correctly when more than one remote is configured.
- Rewrote how tasks are executed locally. Attaché should now throw an exception if one or more commands fail in the same way the SSH scripts work.
- Fixed a bug with the
releases:activate
command that was not creating the correct symlink.
- Added the ability to change the commands run during the build stage.
- There was a chance that the build process could cause a timeout which would cause Attache to crash. The limit has been removed.
- Added a new
dev
setting to the Composer config.
- Running SSH commands will now happen synchronously and will not return output until the entire task is complete. This should completely do away with the random errors received when getting the currrent releases list.
- Updates to the
install
command to make it just a little less error prone.
- Rearranged the deployment steps a little to avoid a rare bug where the composer installation needed access to the
.env
config.
- Added a new
releases:delete
command.
- Fixed a bug in the
releases:list
command that would crash if a release has a non-timestamp directory name.
Fixed a bug that was not executing the migrate
Artisan command correctly.
- Ability to specify additional assets to copy to the server during deployment that are not included in the repository.
- Fixed a bug in the
InstallCommand
that was erroring out when no intallation was found. - The
install
command will now perform its own check.
- Set the execution timeout to 0 when running the deployer.
- Fixed a bug in the
ScriptTest
that was expecting the wrong exception.
- The
branch
andport
server attributes are no longer required and will default tomaster
and22
respectively. - If there is a missing attribute, the exception will now include the name of the attribute.
- Server configurations will now through a
ServerException
instead of aRuntimeException
. - Invalid script tags will now through a
ConfigurationException
instead of aRuntimeException
.
- Fixed a bug causing a crash when intializing a project that does not have a Git remote yet.
- No longer need to specify the server name for single server configs.
- Updated the version number in the
attache
bin correctly.
- Fixed a bug in the
deploy
command that was not running theprune
command correctly when uring the--prune
option. - Fixed a bug in the
deploy
command that was not passing the server name to theprune
command.
- Fixed a bug where only the current task would exit if a non-zero exit code is returned.
- Fixed a bug that was not running the
artisan storage:link
command correctly. - Fixed a bug when running global composer but still prefixing with the PHP binary.
- The
Initializer::getConfig()
method was not settingcomposer.local
to a valid boolean value.
- Cleaned up the
Command::execute()
method a little. - The
Command::fire()
method now returns a valid integer value by default.
- Added a set of tags to the scripts so that correct deployment values can be used.
- Added a new
ScriptCompiler
class that translates tags into actual values. - The
Server
instances now have a newlatestReleaseId()
method and areleaseIds()
method. - Added a test for the
ScriptCompiler
.
- Added a new
default
server feature. - Added a
Command::requiresServer()
method for commands that expect a specified server. - Added missing documentation to all class methods.
- The server name is no longer required for commands that need a server if a
default
is set. - The
ReleasesActivateCommand
arguments have been reversed. - A fairly large cleanup of all the classes.
- All of the task and step methods in
Deployer
no longer accept aServer
instance as a parameter. - All commands now extend an
Attache\Console\Command
abstract class.
- The
servers:show
command has been removed as it doesn't really serve any useful purpose.
- Changed how the
ConfigurationProvider::setConfig
method loads config. - Added some new tests around the loading of config files.
- Added a new more tests.
- Support for the new server scripts feature.
- Updated
ReleaseService::fetch()
to throw an exception if there is no response from the server. - Refactored the
Deployer
class to allow for better testing.
- Fixed a major bug which was overwriting the
.env
file during deployment.
- Added a new
tty()
method to theSsh
class to force TTY use if it's supported.
- The output will now clear the screen between each step.
- Force ANSI output when running Composer install.
- Removed an old unused
installed
method from theReleaseService
class.
- Added a
common
server configuration option.
- Added new config options to specify the binary names for
composer
andphp
. - Added a config option to force composer to be installed locally.
- The server configuration is now merged using
array_replace_recursive
. - The init command will now include the
php
andcomposer
settings by default.
- Added a
releases:down
and areleases:up
command to quickly take deployments offline and back online.
- The Config file created by the
init
command will now include a defaultpaths
object. - Added the
migrate
config option to the default config file.
- Fixed a bug in
Ssh::run()
method that will only attempt to run the callback if it's actually supplied.
- Changed how
Ssh::getProcess
runs commands to make them safer. - The runner will now exit if a non-zero exit code is returned.
- Added an
init
command to install new config files. - Added an
install
command to run the initial deployments. - Moved all the logic from the
DeployCommand
into aDeployer
class. - Wrote out a bunch for the
README.md
file.