diff --git a/docs/recipe/deploy/rollback.md b/docs/recipe/deploy/rollback.md index 687d16541..137948269 100644 --- a/docs/recipe/deploy/rollback.md +++ b/docs/recipe/deploy/rollback.md @@ -37,7 +37,7 @@ The value of this configuration is autogenerated on access. ## Tasks ### rollback {#rollback} -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/rollback.php#L63) +[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/rollback.php#L67) Rollbacks to the previous release. diff --git a/recipe/deploy/release.php b/recipe/deploy/release.php index 42d9a2f3c..81cb74dfe 100644 --- a/recipe/deploy/release.php +++ b/recipe/deploy/release.php @@ -176,6 +176,8 @@ $status = "$release (bad)"; } elseif (test("[ -f releases/$release/DIRTY_RELEASE ]")) { $status = "$release (dirty)"; + } elseif (!test("[ -f releases/$release/FINISHED_RELEASE ]")) { + $status = "$release (unfinished)"; } else { $status = "$release"; } diff --git a/recipe/deploy/rollback.php b/recipe/deploy/rollback.php index 7afd34d01..dd2e4adb2 100644 --- a/recipe/deploy/rollback.php +++ b/recipe/deploy/rollback.php @@ -36,8 +36,12 @@ while (isset($releasesBeforeCurrent[0])) { $candidate = $releasesBeforeCurrent[0]; - // Skip all bad releases. - if (test("[ -f {{deploy_path}}/releases/$candidate/BAD_RELEASE ]")) { + if ( + // Only consider successful releases. + !test("[ -f {{deploy_path}}/releases/$candidate/FINISHED_RELEASE ]") + // Skip all bad releases (that have previously been rolled back). + || test("[ -f {{deploy_path}}/releases/$candidate/BAD_RELEASE ]") + ) { array_shift($releasesBeforeCurrent); continue; } diff --git a/recipe/deploy/symlink.php b/recipe/deploy/symlink.php index 8b9c2c0a2..e8257c2f1 100644 --- a/recipe/deploy/symlink.php +++ b/recipe/deploy/symlink.php @@ -18,4 +18,6 @@ run("cd {{deploy_path}} && {{bin/symlink}} {{release_path}} {{current_path}}"); // Atomic override symlink. run("cd {{deploy_path}} && rm release"); // Remove release link. } + + run("echo '{{user}}' > {{release_path}}/FINISHED_RELEASE"); });