Files
UmbrelApps/tools/evolu-relay/build.sh
T

72 lines
3.8 KiB
Bash
Raw Normal View History

#!/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."