#!/bin/sh # ═══════════════════════════════════════════════════════════════════════════════ # Bouwt de image voor de app whatsnext-evolu-relay. # # Waarom dit bestand bestaat: Trezor publiceert geen image. Hun werkproces duwt # naar een eigen Amazon ECR en op Docker Hub staat niets, dus er is geen # `docker pull` die iets oplevert. De broncode is wel publiek, met een Dockerfile # erin. Dit script is de brug: het haalt de broncode op een vastgezette commit en # bouwt hún Dockerfile. # # Waarom het NIET in de app-map staat: umbreld kopieert de hele app-map naar het # apparaat, en bij een update wordt alleen een whitelist ververst waar een # Dockerfile niet in zit. Bouwen tijdens het starten van de app zou de installatie # bovendien minuten laten hangen. Het recept hoort dus in de repo en het resultaat # in een register of in de lokale Docker-opslag; de app verwijst alleen naar de tag. # # Waarom we hun Dockerfile gebruiken en geen eigen: dan hoeven we hun bouwstappen # niet na te bouwen en niet bij te houden. Wat wij toevoegen is uitsluitend de pin. # # Draaien: sh build.sh # Vereist: docker en git op de machine waar je bouwt. # ═══════════════════════════════════════════════════════════════════════════════ set -eu # ── De pin ──────────────────────────────────────────────────────────────────── # Dit is het enige wat je aanpast als je een nieuwere versie wil. Verhoog daarna # ook `version` in whatsnext-evolu-relay/umbrel-app.yml, anders rolt umbrelOS de # wijziging niet uit. UPSTREAM_REPO="https://github.com/trezor/trezor-suite-sync.git" UPSTREAM_COMMIT="c03a2043acec48d4a1bbafca65e94da33dce1edd" # De tag waar docker-compose.yml van de app naar verwijst. De korte commit zit # erin, zodat je op het apparaat kunt zien wat er draait. IMAGE="whatsnext/evolu-relay:c03a204" # ── Bouwen ──────────────────────────────────────────────────────────────────── WORKDIR="$(mktemp -d)" cleanup() { rm -rf "$WORKDIR"; } trap cleanup EXIT INT TERM echo "Broncode ophalen op ${UPSTREAM_COMMIT}" # Niet `clone --branch`: dat pint op een naam die meebeweegt. Een fetch van één # commit haalt precies deze toestand op en niets anders. GitHub staat het ophalen # van een losse commit-sha toe; een Git-server die dat niet doet, geeft hier een # foutmelding in plaats van stil een andere versie te bouwen. git init --quiet "$WORKDIR" git -C "$WORKDIR" remote add origin "$UPSTREAM_REPO" git -C "$WORKDIR" fetch --quiet --depth 1 origin "$UPSTREAM_COMMIT" git -C "$WORKDIR" checkout --quiet FETCH_HEAD # Controle dat we hebben wat we dachten. Zonder deze regel bouwt het script bij # een gewijzigde afspraak over sha's stil de verkeerde toestand. GEVONDEN="$(git -C "$WORKDIR" rev-parse HEAD)" if [ "$GEVONDEN" != "$UPSTREAM_COMMIT" ]; then echo "FOUT: opgehaald ${GEVONDEN}, verwacht ${UPSTREAM_COMMIT}" >&2 exit 1 fi echo "Bouwen als ${IMAGE}" docker build --tag "$IMAGE" "$WORKDIR" echo echo "Klaar. De app verwijst naar deze tag:" docker image inspect --format '{{.RepoTags}} {{.Id}}' "$IMAGE" echo echo "Wil je hem later uit een register halen in plaats van lokaal, dan is dit" echo "de plek: tag hem naar dat register, push, en zet de digest uit" echo "\`docker buildx imagetools inspect\` in docker-compose.yml. Zie" echo "Docs/Referenties/Images-pinnen.md."