mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
Решения владельца: 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
50 lines
2.9 KiB
Bash
Executable File
50 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Бандл головы dev для стенда разработки (#657).
|
|
#
|
|
# С #657 бандл в дереве dev меняется только релизным кандидатом, поэтому
|
|
# между бетами `custom_components/houseplan/frontend/` в dev — бандл последней
|
|
# беты. Свежий бандл головы dev Validate публикует в служебную ветку
|
|
# `dev-build` (scripts/dev-build.mjs): один коммит без истории с
|
|
# `custom_components/houseplan/frontend/**` и DEV-BUILD.json (SHA источника).
|
|
#
|
|
# Скрипт кладёт этот бандл поверх рабочей копии стенда. В
|
|
# /opt/hp/bin/hp-update-dev.sh — два вызова вокруг `git pull` dev:
|
|
#
|
|
# demo/stand/update-dev-bundle.sh --reset <checkout> # до pull: вернуть отслеживаемый бандл
|
|
# git -C <checkout> pull --ff-only
|
|
# demo/stand/update-dev-bundle.sh <checkout> # после pull, до перезапуска HA
|
|
#
|
|
# Первый вызов нужен, потому что наложенный бандл — локальная правка
|
|
# отслеживаемых файлов, и pull кандидата беты на ней остановился бы.
|
|
#
|
|
# Если dev-build отстаёт от головы dev (Validate ещё идёт или упал), скрипт
|
|
# предупреждает и всё равно ставит последний опубликованный бандл: он собран
|
|
# из чуть более старого dev, но из того же конвейера, а не из дерева беты.
|
|
set -euo pipefail
|
|
|
|
reset=false
|
|
if [ "${1:-}" = "--reset" ]; then reset=true; shift; fi
|
|
checkout=${1:?usage: update-dev-bundle.sh [--reset] <checkout-of-dev>}
|
|
remote=${HP_DEV_BUILD_REMOTE:-origin}
|
|
branch=${HP_DEV_BUILD_BRANCH:-dev-build}
|
|
target=custom_components/houseplan/frontend
|
|
|
|
cd "$checkout"
|
|
if $reset; then
|
|
git checkout -- "$target"
|
|
git clean -fdq -- "$target"
|
|
echo "update-dev-bundle: $target возвращён к закоммиченному"
|
|
exit 0
|
|
fi
|
|
git fetch --quiet "$remote" "+refs/heads/$branch:refs/remotes/$remote/$branch"
|
|
built=$(git show "$remote/$branch:DEV-BUILD.json" | sed -n 's/.*"source": *"\([0-9a-f]\{40\}\)".*/\1/p')
|
|
head=$(git rev-parse HEAD)
|
|
if [ "$built" != "$head" ]; then
|
|
echo "update-dev-bundle: $branch собран из ${built:0:8}, а рабочая копия на ${head:0:8} — ставлю последний опубликованный" >&2
|
|
fi
|
|
# Заменить каталог целиком: переименованные content-hashed чанки не должны
|
|
# копиться от сборки к сборке.
|
|
rm -rf "$target"
|
|
git archive "$remote/$branch" "$target" | tar -x
|
|
echo "update-dev-bundle: $target ← $branch (${built:0:8})"
|