- 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
36 lines
853 B
PHP
36 lines
853 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Framework\Notification\ValueObjects;
|
|
|
|
/**
|
|
* Supported notification delivery channels
|
|
*/
|
|
enum NotificationChannel: string
|
|
{
|
|
case DATABASE = 'database';
|
|
case EMAIL = 'email';
|
|
case PUSH = 'push';
|
|
case SMS = 'sms';
|
|
case WEBHOOK = 'webhook';
|
|
case WHATSAPP = 'whatsapp';
|
|
case TELEGRAM = 'telegram';
|
|
|
|
public function isRealtime(): bool
|
|
{
|
|
return match ($this) {
|
|
self::DATABASE, self::PUSH, self::WHATSAPP, self::TELEGRAM => true,
|
|
self::EMAIL, self::SMS, self::WEBHOOK => false,
|
|
};
|
|
}
|
|
|
|
public function requiresExternalService(): bool
|
|
{
|
|
return match ($this) {
|
|
self::EMAIL, self::SMS, self::WEBHOOK, self::WHATSAPP, self::TELEGRAM => true,
|
|
self::DATABASE, self::PUSH => false,
|
|
};
|
|
}
|
|
}
|