From 9306c9a913bafd5bfb395074517a4a1ed7dc86ab Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 7 Aug 2026 13:46:23 +0000 Subject: [PATCH] =?UTF-8?q?Styckning=20av=20=C3=B6verstora=20filer=20?= =?UTF-8?q?=E2=80=94=20kanalen=20t=C3=A5l=20h=C3=B6gst=202=20MB=20per=20pa?= =?UTF-8?q?ket?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt --- felsokning/deploy/README.md | 2 +- felsokning/deploy/anvisningar/03-webb.md | 12 ++++++++ felsokning/deploy/paketera.sh | 37 ++++++++++++++++++------ 3 files changed, 41 insertions(+), 10 deletions(-) diff --git a/felsokning/deploy/README.md b/felsokning/deploy/README.md index ed462c7..ae6629e 100644 --- a/felsokning/deploy/README.md +++ b/felsokning/deploy/README.md @@ -16,7 +16,7 @@ bash felsokning/deploy/paketera.sh | `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 | | `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 | | `05-verifiering.zip` | `docs/` | Slutkontroll av den driftsatta miljön, driftdokumentation | diff --git a/felsokning/deploy/anvisningar/03-webb.md b/felsokning/deploy/anvisningar/03-webb.md index 8b5ad3f..c6ec07b 100644 --- a/felsokning/deploy/anvisningar/03-webb.md +++ b/felsokning/deploy/anvisningar/03-webb.md @@ -22,6 +22,18 @@ teknisk, inte logisk — de är ETT steg: [ -f "$f" ] || echo "SAKNAS: $f" done # ingen utskrift = komplett ``` +3. Sätt ihop styckade filer. En fil som ensam var större än delbudgeten + ligger som bitar (`.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 kontrollera FÖRE, så att felmeddelandet är "del saknas", inte en diff --git a/felsokning/deploy/paketera.sh b/felsokning/deploy/paketera.sh index 45a176f..32702e8 100755 --- a/felsokning/deploy/paketera.sh +++ b/felsokning/deploy/paketera.sh @@ -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)" # 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 -# under den. Ändras per körning: DELBUDGET=2000000 bash paketera.sh … +# gränsen: högst 2 MB per paket, så standarden ligger med marginal +# under den. Ändras per körning: DELBUDGET=1000000 bash paketera.sh … # 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 ... — vägarna är relativa ROT. -# EXKLUDERA (miljövariabel) läggs till tar-exkluderingarna för anropet. +# paketera ... — vägarna är relativa +# KALLROT (standard ROT). EXKLUDERA (miljövariabel) läggs till +# tar-exkluderingarna för anropet. paketera() { local namn="$1" anvisning="$2"; shift 2 local arbets; arbets="$(mktemp -d)" # 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"} "$@" | 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 # fylls i namnordning, så samma träd ger samma delar. 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=() slut_resursdel() { ((${#resurser[@]})) || return 0 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=() } 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 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 +rm -rf "$RESURSROT" paketera 04-arbetslast 04-arbetslast.md infra/terraform paketera 05-verifiering 05-verifiering.md docs