fix(deploy): preserve host preland config

This commit is contained in:
Panfilov Konstantin committed 2026-10-17 20:48:52 +03:00
1 parent 9835bb0ef8
commit f14ce88cc6
6 files changed
+169 -20

No files matched your search

+1 -1
View File
@@ -38,7 +38,7 @@ $expected = [
'bchoice' => 'a',
'chb' => 'b',
'tp' => '1',
'focus' => 'center',
'focus' => 'face',
'utm_source' => 'stage-ad',
'subid' => 'click-42',
];
+9 -5
View File
@@ -2,8 +2,9 @@
/**
* Регрессия единственного рабочего конфига приленда.
*
* Stage-конфиг — единственный канонический конфиг каждого приленда. Он должен
* быть в репозитории и попадать во все FTP/SFTP-доставки без исключений.
* Репозиторный config.json задаёт схему и стартовые значения. Рабочий конфиг
* владельца на хостинге не перезаписывается: delivery добавляет только
* отсутствующие обязательные UTM-ключи.
*/
declare(strict_types=1);
@@ -25,7 +26,7 @@ if (!is_array($config)) {
'bchoice' => ['a' => 1, 'b' => 0, 'default' => 'a'],
'chb' => ['a' => 1, 'b' => 0, 'default' => 'b'],
'tp' => ['1' => 0, '2' => 1, 'default' => '1'],
'focus' => ['center' => 1, 'face' => 0, 'default' => 'center'],
'focus' => ['center' => 0, 'face' => 1, 'default' => 'face'],
];
if (($config['host'] ?? null) !== $expected['host']) {
@@ -58,8 +59,11 @@ foreach ([
'deploy-zoomstage' => $stageBlock,
'deploy-zoompixel-production' => $productionBlock,
] as $delivery => $block) {
if ($block === '' || str_contains($block, 'config\\.json$')) {
$failures[] = "{$delivery} обязан доставлять единый версионируемый config.json.";
if ($block === ''
|| !str_contains($block, 'config\\.json$')
|| !str_contains($block, 'ensure-focus-config.php')
|| !str_contains($block, 'Preserve host config and add focus if absent')) {
$failures[] = "{$delivery} обязан сохранять хостовый config.json и добавлять только отсутствующий focus.";
}
}