mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-02 04:38:55 +00:00
infra(process): bundle and review index change only on the way to dev (#657)
Решения владельца: 1б — индекс ревью не пересобирается в ветке задачи, только коммитами, идущими в dev; 2б — бандл меняет только кандидат беты/релиза, стенд dev берёт его из артефакта Validate. - scripts/bundle-policy.mjs: коммит, трогающий dist/** или custom_components/houseplan/frontend/**, обязан нести Release: (хук commit-msg и история в CI через validate-commit-provenance; коммиты с датой автора до 2026-09-27 не судятся); --verify судит целостность свежей сборки всегда, побайтовую сверку с закоммиченной копией — только на коммите, меняющем бандл, или кандидате; --clean. - release-prerelease: публикация отказывает, если отпечаток исходников в закоммиченном манифесте не равен отпечатку дерева (хотфикс поверх кандидата без пересборки). - bundle-sync: по умолчанию только demo/srv/assets; --release (npm run bundle:release) — ещё и custom_components. - rebase-on-dev: конфликт в бандле берёт копию dev, без пересборки и amend. - validate.yml: job dev_build публикует card-bundle головы dev в сиротскую ветку dev-build (scripts/dev-build.mjs); стенд накладывает её demo/stand/update-dev-bundle.sh. - _process.yml: индекс ревью больше не пересобирается при приведении к dev и при публикации документа в ветку задачи. - golden-wsl-artifact/golden-container: сборка перед съёмкой не считается правкой источника, после — bundle:clean. - test/bundle-tree-committed: судит закоммиченный снимок, не диск. - 11 мутантов в реестре; PROCESS/AGENTS/DEVELOPMENT/AUTHOR/REVIEWER. Issue: #657 User-Visible: no
This commit is contained in:
@@ -69,7 +69,7 @@ const writeLegacyTarget = (root, target) => {
|
||||
}));
|
||||
};
|
||||
|
||||
test('#486 bundle sync materializes both entries and removes the legacy inventory', () => {
|
||||
test('#486/#657 bundle sync materializes both entries, the HACS copy only with --release', () => {
|
||||
const root = mkdtempSync(join(tmpdir(), 'houseplan-bundle-sync-'));
|
||||
try {
|
||||
mkdirSync(join(root, 'scripts'), { recursive: true });
|
||||
@@ -84,7 +84,17 @@ test('#486 bundle sync materializes both entries and removes the legacy inventor
|
||||
'custom_components/houseplan/frontend', 'demo/srv/assets',
|
||||
]) writeLegacyTarget(root, target);
|
||||
|
||||
const run = spawnSync(process.execPath, ['scripts/bundle-sync.mjs'], {
|
||||
// #657: без --release копия HACS не трогается — бандл меняет только кандидат.
|
||||
const demoOnly = spawnSync(process.execPath, ['scripts/bundle-sync.mjs'], {
|
||||
cwd: root, encoding: 'utf8',
|
||||
});
|
||||
assert.equal(demoOnly.status, 0, `${demoOnly.stdout}\n${demoOnly.stderr}`);
|
||||
assert.equal(readFileSync(join(root, 'demo/srv/assets/houseplan-card.js'), 'utf8'), 'card facade');
|
||||
assert.equal(readFileSync(join(root, 'custom_components/houseplan/frontend/houseplan-card.js'), 'utf8'), 'old card',
|
||||
'обычная раскладка не должна менять закоммиченный бандл (#657)');
|
||||
assert.equal(existsSync(join(root, 'custom_components/houseplan/frontend/houseplan-legacy.js')), true);
|
||||
|
||||
const run = spawnSync(process.execPath, ['scripts/bundle-sync.mjs', '--release'], {
|
||||
cwd: root, encoding: 'utf8',
|
||||
});
|
||||
assert.equal(run.status, 0, `${run.stdout}\n${run.stderr}`);
|
||||
|
||||
Reference in New Issue
Block a user