env('DEPLOYMENT_PACKAGE_ENABLED', false), /* |-------------------------------------------------------------------------- | Stage whitelist (2. védelmi réteg) |-------------------------------------------------------------------------- | | Szándékosan hardkódolt lista, nem env-ből jön: ez fogja meg azt az esetet, | ha valaki a fenti kapcsolót tévedésből bemásolja egy szerver .env-jébe. | */ 'stages' => ['local'], /* |-------------------------------------------------------------------------- | Jogosultság (3. réteg) és láthatóság (4. réteg) |-------------------------------------------------------------------------- | | A feature flag NEM biztonsági réteg - a védelmet a fenti kettő és a | szerepkör adja. A flag a menü-láthatóságot vezérli, illetve deploy nélküli | kikapcsolást és név szerinti átadást tesz lehetővé (feature_flag_overrides). | */ 'role' => 'developer', 'feature_flag' => 'DeploymentPackage', /* |-------------------------------------------------------------------------- | Git |-------------------------------------------------------------------------- */ 'repo_path' => base_path(), 'git_binary' => env('DEPLOYMENT_GIT_BINARY', 'git'), 'timeout' => 60, /* |-------------------------------------------------------------------------- | Csomagolás |-------------------------------------------------------------------------- */ 'output_path' => env('DEPLOYMENT_OUTPUT_PATH', storage_path('app/private/deployments')), 'max_files' => 500, 'commit_limits' => [50, 100, 200], /* | Ezek soha nem kerülnek csomagba, akkor sem, ha a diffben szerepelnének. | A minták Str::is() szintaxisúak, a repo gyökeréhez képest relatív úton. */ 'exclude' => [ '.env', '.env.*', 'auth.json', '.git*', 'storage/*', 'vendor/*', 'node_modules/*', ], /* | Fájlok, amik csomagolhatók, de külön figyelmeztetést érdemelnek, mert | önmagukban nem elegendők (kell melléjük egy parancs a célgépen). */ 'attention' => [ 'migration' => ['database/migrations/*'], 'seeder' => ['database/seeders/*'], 'composer' => ['composer.json', 'composer.lock'], 'asset' => [ 'resources/js/*', 'resources/css/*', 'resources/modern/*', 'vite.config.js', 'webpack.mix.js', 'package.json', 'package-lock.json', ], /* | A queue worker és a scheduler hosszan futó PHP folyamat: a már betöltött | osztályokat a memóriájában tartja, ezért a fájlok felmásolása után is a RÉGI | kóddal dolgozik, amíg újra nem indul. Ez némán rossz viselkedést okoz (2026-08-17, | árlista végrehajtás: a job "elkészült" státuszt adott anélkül, hogy bármit írt volna), | ezért minden háttérben is futó kód változása restartot igényel - nem csak a jobok. */ 'runtime' => [ 'app/*', 'config/*', 'database/*', 'routes/*', 'bootstrap/*', 'composer.lock', ], /* Csak a figyelmeztetés szövegének pontosításához, a restart ettől függetlenül kell. */ 'job' => ['app/Jobs/*'], 'console' => ['app/Console/*'], ], /* |-------------------------------------------------------------------------- | Docker Swarm |-------------------------------------------------------------------------- | | A restart parancsokat a Swarm leader node-on keresztül kell kiadni | (ld. docs/cicd-context.md). | */ 'swarm' => [ 'host' => env('DEPLOYMENT_SWARM_HOST', '46.29.140.234'), 'user' => env('DEPLOYMENT_SWARM_USER', 'root'), ], /* |-------------------------------------------------------------------------- | Célkörnyezetek |-------------------------------------------------------------------------- | | Az expected_branch csak figyelmeztetést vezérel, nem tiltást. | A remote_path a shared storage útvonala (ld. docs/cicd-context.md). | */ /* | A sorrend számít: az első az alapértelmezett célkörnyezet a felületen | (DeploymentTargets::defaultKey()). A d2d azért van elöl, mert azt frissítjük | sűrűbben, tehát a gyakoribb eset legyen az alapértelmezés. */ 'targets' => [ 'd2d' => [ 'label' => 'd2d — fejlesztői', 'domain' => 'd2d.emegrendeles.hu', 'remote_path' => '/delirest/d2d.emegrendeles.hu/app/', 'expected_branch' => 'test', // Ugyanabból az imageből, közös volume-ról több service is futtatja a kódot. // A web konténer (d2d-environment_app) kérésenként újratölti, ezért az nem kell ide. 'services' => [ 'queue' => 'd2d-environment_queue', 'scheduler' => 'd2d-environment_scheduler', ], 'services_note' => 'A d2d scheduler jelenleg 0 replikán fut — ha leskálázva marad, a restartja üresjárat.', ], 'e2e' => [ 'label' => 'e2e — t2t éles', 'domain' => 'e2e.emegrendeles.hu', 'remote_path' => '/delirest/test.t2t.emegrendeles.hu/app/', 'expected_branch' => 'main', 'services' => [ 'scheduler' => 't2t_scheduler', ], 'services_note' => 'A t2t-n még nincs queue worker service; ha létrejön, a névkonvenció alapján t2t_queue lesz, és azt is újra kell majd indítani.', ], ], ];