feat(Deployment): Integrate Ansible deployment via PHP deployment pipeline
- Create AnsibleDeployStage using framework's Process module for secure command execution - Integrate AnsibleDeployStage into DeploymentPipelineCommands for production deployments - Add force_deploy flag support in Ansible playbook to override stale locks - Use PHP deployment module as orchestrator (php console.php deploy:production) - Fix ErrorAggregationInitializer to use Environment class instead of $_ENV superglobal Architecture: - BuildStage → AnsibleDeployStage → HealthCheckStage for production - Process module provides timeout, error handling, and output capture - Ansible playbook supports rollback via rollback-git-based.yml - Zero-downtime deployments with health checks
This commit is contained in:
@@ -16,7 +16,8 @@ trait AtomicStorageTrait
|
||||
{
|
||||
public function putAtomic(string $path, string $content): void
|
||||
{
|
||||
$tempPath = $path . '.tmp.' . uniqid();
|
||||
$generator = new \App\Framework\Ulid\UlidGenerator();
|
||||
$tempPath = $path . '.tmp.' . $generator->generate();
|
||||
$this->put($tempPath, $content);
|
||||
|
||||
$resolvedPath = $this->resolvePath($path);
|
||||
|
||||
@@ -79,7 +79,8 @@ final readonly class FilePath implements Stringable
|
||||
*/
|
||||
public static function temp(?string $filename = null): self
|
||||
{
|
||||
$filename ??= 'tmp_' . uniqid();
|
||||
$generator = new \App\Framework\Ulid\UlidGenerator();
|
||||
$filename ??= 'tmp_' . $generator->generate();
|
||||
|
||||
return self::tempDir()->join($filename);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user