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:
@@ -260,13 +260,14 @@ final class SmtpTransport implements TransportInterface
|
||||
|
||||
private function buildMultipartAlternativeMessage(Message $message, array $lines): string
|
||||
{
|
||||
$boundary = 'alt_' . uniqid();
|
||||
$generator = new \App\Framework\Ulid\UlidGenerator();
|
||||
$boundary = 'alt_' . $generator->generate();
|
||||
|
||||
$lines[] = 'MIME-Version: 1.0';
|
||||
|
||||
if ($message->hasAttachments()) {
|
||||
// Mixed with alternative inside
|
||||
$mixedBoundary = 'mixed_' . uniqid();
|
||||
$mixedBoundary = 'mixed_' . $generator->generate();
|
||||
$lines[] = 'Content-Type: multipart/mixed; boundary="' . $mixedBoundary . '"';
|
||||
$lines[] = '';
|
||||
$lines[] = '--' . $mixedBoundary;
|
||||
@@ -291,7 +292,8 @@ final class SmtpTransport implements TransportInterface
|
||||
|
||||
private function buildMultipartMixedMessage(Message $message, array $lines): string
|
||||
{
|
||||
$boundary = 'mixed_' . uniqid();
|
||||
$generator = new \App\Framework\Ulid\UlidGenerator();
|
||||
$boundary = 'mixed_' . $generator->generate();
|
||||
|
||||
$lines[] = 'MIME-Version: 1.0';
|
||||
$lines[] = 'Content-Type: multipart/mixed; boundary="' . $boundary . '"';
|
||||
@@ -375,7 +377,8 @@ final class SmtpTransport implements TransportInterface
|
||||
|
||||
private function generateMessageId(): string
|
||||
{
|
||||
return uniqid() . '.' . time() . '@' . gethostname();
|
||||
$generator = new \App\Framework\Ulid\UlidGenerator();
|
||||
return $generator->generate() . '.' . time() . '@' . gethostname();
|
||||
}
|
||||
|
||||
private function sendCommand(string $command): void
|
||||
@@ -412,7 +415,8 @@ final class SmtpTransport implements TransportInterface
|
||||
}
|
||||
|
||||
// Fallback to generated ID
|
||||
return uniqid() . '@' . gethostname();
|
||||
$generator = new \App\Framework\Ulid\UlidGenerator();
|
||||
return $generator->generate() . '@' . gethostname();
|
||||
}
|
||||
|
||||
private function disconnect(): void
|
||||
|
||||
Reference in New Issue
Block a user