Styckning av överstora filer — kanalen tål högst 2 MB per paket
Delbudgeten sänkt till 1,9 MB. Logotypen är ensam större än så och bilder komprimerar inte, så en fil som överstiger budgeten styckas nu i bitar (.alva-del-NN) i ett eget resurskällträd; mottagaren sätter ihop dem igen mot originalsummorna i DELAT.sha256. Anvisningen för paket 03 har fått ihopsättningssteget, med stopp i stället for gissning vid summafel. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt
This commit is contained in:
@@ -16,7 +16,7 @@ bash felsokning/deploy/paketera.sh <målkatalog>
|
|||||||
| `01-aws-bas.zip` | `infra/aws` + `infra/postgres-init.sql` | Terraform: VPC, EKS, Aurora, S3, ECR, KMS, hemligheter, domän, larm |
|
| `01-aws-bas.zip` | `infra/aws` + `infra/postgres-init.sql` | Terraform: VPC, EKS, Aurora, S3, ECR, KMS, hemligheter, domän, larm |
|
||||||
| `02-tjanster.zip` | `services/` — plattform, ai-orkester, gemensam | Bygg och publicera backendbilderna till ECR, initiera schemat |
|
| `02-tjanster.zip` | `services/` — plattform, ai-orkester, gemensam | Bygg och publicera backendbilderna till ECR, initiera schemat |
|
||||||
| `03-webb-kalla.zip` | `app/` (utan `node_modules`/`dist`/`src/assets`) + `supabase/` | Bygg och publicera webbilden |
|
| `03-webb-kalla.zip` | `app/` (utan `node_modules`/`dist`/`src/assets`) + `supabase/` | Bygg och publicera webbilden |
|
||||||
| `03-webb-resurser-*.zip` | `app/src/assets` i delar om högst `DELBUDGET` byte (standard 2,4 MB — kanalen tål högst 2,5 MB per paket) | Hör till 03 — packas upp i samma träd före bygget |
|
| `03-webb-resurser-*.zip` | `app/src/assets` i delar om högst `DELBUDGET` byte (standard 1,9 MB — kanalen tål högst 2 MB per paket); en fil större än budgeten styckas i bitar som mottagaren sätter ihop mot `DELAT.sha256` | Hör till 03 — packas upp i samma träd före bygget |
|
||||||
| `04-arbetslast.zip` | `infra/terraform` | Terraform: arbetslasten i klustret, ingress, DNS |
|
| `04-arbetslast.zip` | `infra/terraform` | Terraform: arbetslasten i klustret, ingress, DNS |
|
||||||
| `05-verifiering.zip` | `docs/` | Slutkontroll av den driftsatta miljön, driftdokumentation |
|
| `05-verifiering.zip` | `docs/` | Slutkontroll av den driftsatta miljön, driftdokumentation |
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,18 @@ teknisk, inte logisk — de är ETT steg:
|
|||||||
[ -f "$f" ] || echo "SAKNAS: $f"
|
[ -f "$f" ] || echo "SAKNAS: $f"
|
||||||
done # ingen utskrift = komplett
|
done # ingen utskrift = komplett
|
||||||
```
|
```
|
||||||
|
3. Sätt ihop styckade filer. En fil som ensam var större än delbudgeten
|
||||||
|
ligger som bitar (`<fil>.alva-del-00`, `-01`, …) och de ursprungliga
|
||||||
|
summorna i `app/src/assets/DELAT.sha256`:
|
||||||
|
```sh
|
||||||
|
for f in app/src/assets/*.alva-del-00; do
|
||||||
|
bas="${f%.alva-del-00}"
|
||||||
|
cat "$bas".alva-del-* > "$bas" && rm "$bas".alva-del-*
|
||||||
|
done
|
||||||
|
sha256sum -c app/src/assets/DELAT.sha256 && rm app/src/assets/DELAT.sha256
|
||||||
|
```
|
||||||
|
Stämmer inte en summa: en bit saknas eller är skadad — hämta om den
|
||||||
|
delen, gissa aldrig ihop en bild.
|
||||||
|
|
||||||
Saknas en resursfil faller för övrigt bygget på importfel — men
|
Saknas en resursfil faller för övrigt bygget på importfel — men
|
||||||
kontrollera FÖRE, så att felmeddelandet är "del saknas", inte en
|
kontrollera FÖRE, så att felmeddelandet är "del saknas", inte en
|
||||||
|
|||||||
@@ -18,19 +18,22 @@ SHA="$(git -C "$ROT" rev-parse --short HEAD 2>/dev/null || echo "utan-git")"
|
|||||||
STAMPEL="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
STAMPEL="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
||||||
|
|
||||||
# Största tillåtna innehåll per resursdel. Mottagarsidans kanal sätter
|
# Största tillåtna innehåll per resursdel. Mottagarsidans kanal sätter
|
||||||
# gränsen: högst 2,5 MB per paket, så standarden ligger med marginal
|
# gränsen: högst 2 MB per paket, så standarden ligger med marginal
|
||||||
# under den. Ändras per körning: DELBUDGET=2000000 bash paketera.sh …
|
# under den. Ändras per körning: DELBUDGET=1000000 bash paketera.sh …
|
||||||
# Bilderna är redan komprimerade, så zip-storleken följer innehållet.
|
# Bilderna är redan komprimerade, så zip-storleken följer innehållet.
|
||||||
DELBUDGET="${DELBUDGET:-2400000}"
|
# En enskild fil större än budgeten styckas i bitar (.alva-del-NN) som
|
||||||
|
# mottagaren sätter ihop igen mot summorna i DELAT.sha256.
|
||||||
|
DELBUDGET="${DELBUDGET:-1900000}"
|
||||||
|
|
||||||
# paketera <namn> <anvisningsfil> <väg>... — vägarna är relativa ROT.
|
# paketera <namn> <anvisningsfil> <väg>... — vägarna är relativa
|
||||||
# EXKLUDERA (miljövariabel) läggs till tar-exkluderingarna för anropet.
|
# KALLROT (standard ROT). EXKLUDERA (miljövariabel) läggs till
|
||||||
|
# tar-exkluderingarna för anropet.
|
||||||
paketera() {
|
paketera() {
|
||||||
local namn="$1" anvisning="$2"; shift 2
|
local namn="$1" anvisning="$2"; shift 2
|
||||||
local arbets; arbets="$(mktemp -d)"
|
local arbets; arbets="$(mktemp -d)"
|
||||||
|
|
||||||
# node_modules återskapas ur package-lock; dist byggs i webbilden.
|
# node_modules återskapas ur package-lock; dist byggs i webbilden.
|
||||||
tar -C "$ROT" -cf - --exclude=node_modules --exclude=app/dist \
|
tar -C "${KALLROT:-$ROT}" -cf - --exclude=node_modules --exclude=app/dist \
|
||||||
${EXKLUDERA:+--exclude="$EXKLUDERA"} "$@" |
|
${EXKLUDERA:+--exclude="$EXKLUDERA"} "$@" |
|
||||||
tar -C "$arbets" -xf -
|
tar -C "$arbets" -xf -
|
||||||
|
|
||||||
@@ -58,19 +61,35 @@ paketera 02-tjanster 02-tjanster.md services
|
|||||||
# DELBUDGET byte — helheten var större än mottagarkanalen tålde. Delarna
|
# DELBUDGET byte — helheten var större än mottagarkanalen tålde. Delarna
|
||||||
# fylls i namnordning, så samma träd ger samma delar.
|
# fylls i namnordning, så samma träd ger samma delar.
|
||||||
EXKLUDERA="app/src/assets" paketera 03-webb-kalla 03-webb.md app supabase
|
EXKLUDERA="app/src/assets" paketera 03-webb-kalla 03-webb.md app supabase
|
||||||
|
|
||||||
|
# Mellansteg: resurserna läggs i ett eget källträd där varje fil som
|
||||||
|
# ensam överstiger budgeten styckas i bitar. DELAT.sha256 bär de
|
||||||
|
# ursprungliga filernas summor — mottagarens kvitto på ihopsättningen.
|
||||||
|
RESURSROT="$(mktemp -d)"
|
||||||
|
while IFS= read -r fil; do
|
||||||
|
mkdir -p "$RESURSROT/$(dirname "$fil")"
|
||||||
|
if (($(stat -c%s "$ROT/$fil") > DELBUDGET)); then
|
||||||
|
split -b "$DELBUDGET" -d -a 2 "$ROT/$fil" "$RESURSROT/$fil.alva-del-"
|
||||||
|
(cd "$ROT" && sha256sum "$fil") >> "$RESURSROT/app/src/assets/DELAT.sha256"
|
||||||
|
else
|
||||||
|
cp "$ROT/$fil" "$RESURSROT/$fil"
|
||||||
|
fi
|
||||||
|
done < <(cd "$ROT" && find app/src/assets -type f | sort)
|
||||||
|
|
||||||
del=0 ack=0 resurser=()
|
del=0 ack=0 resurser=()
|
||||||
slut_resursdel() {
|
slut_resursdel() {
|
||||||
((${#resurser[@]})) || return 0
|
((${#resurser[@]})) || return 0
|
||||||
del=$((del + 1))
|
del=$((del + 1))
|
||||||
paketera "03-webb-resurser-$del" 03-webb.md "${resurser[@]}"
|
KALLROT="$RESURSROT" paketera "03-webb-resurser-$del" 03-webb.md "${resurser[@]}"
|
||||||
ack=0 resurser=()
|
ack=0 resurser=()
|
||||||
}
|
}
|
||||||
while IFS= read -r fil; do
|
while IFS= read -r fil; do
|
||||||
storlek=$(stat -c%s "$ROT/$fil")
|
storlek=$(stat -c%s "$RESURSROT/$fil")
|
||||||
((ack > 0 && ack + storlek > DELBUDGET)) && slut_resursdel
|
((ack > 0 && ack + storlek > DELBUDGET)) && slut_resursdel
|
||||||
resurser+=("$fil"); ack=$((ack + storlek))
|
resurser+=("$fil"); ack=$((ack + storlek))
|
||||||
done < <(cd "$ROT" && find app/src/assets -type f | sort)
|
done < <(cd "$RESURSROT" && find app/src/assets -type f | sort)
|
||||||
slut_resursdel
|
slut_resursdel
|
||||||
|
rm -rf "$RESURSROT"
|
||||||
|
|
||||||
paketera 04-arbetslast 04-arbetslast.md infra/terraform
|
paketera 04-arbetslast 04-arbetslast.md infra/terraform
|
||||||
paketera 05-verifiering 05-verifiering.md docs
|
paketera 05-verifiering 05-verifiering.md docs
|
||||||
|
|||||||
Reference in New Issue
Block a user