#!/bin/sh # Bauen und Releases ohne lokale Abhaengigkeiten - auf dem Rechner wird nur Docker benoetigt. # # ./build.sh release [patch|minor|major] [--build] [--targets ...] Version hochzaehlen, committen, taggen # ./build.sh build [--targets windows,android] aktuellen Stand (HEAD) bauen # ./build.sh test Krypto-Kompatibilitaet Python <-> Kotlin # # Alles laeuft in temporaeren Containern (--rm). Ergebnis: releases/v/ set -e cd "$(dirname "$0")" ROOT=$(pwd) case "${1:-}" in release) shift ;; build) shift; set -- --build-only "$@" ;; test) shift; set -- --test "$@" ;; *) sed -n '2,8p' "$0"; exit 1 ;; esac docker build -q -f docker-build/runner.Dockerfile -t netclip-build-runner docker-build > /dev/null # Der Runner startet weitere Container ueber den Docker-Socket. Damit deren Bind-Mounts stimmen, # liegt das Repo im Runner unter demselben absoluten Pfad wie auf dem Host. SOCK=/var/run/docker.sock TTY=""; [ -t 0 ] && [ -t 1 ] && TTY="-it" GITCFG=""; [ -f "$HOME/.gitconfig" ] && GITCFG="-v $HOME/.gitconfig:/home/build/.gitconfig:ro" # Ersatz-Identitaet fuer Commits, falls user.name/user.email nicht gesetzt sind (wie git auf dem Host) GITNAME="" grep -qs "^[[:space:]]*name[[:space:]]*=" "$HOME/.gitconfig" || GITNAME="-e GIT_AUTHOR_NAME=$(id -un) -e GIT_COMMITTER_NAME=$(id -un)" exec docker run --rm $TTY \ --user "$(id -u):$(id -g)" --group-add "$(stat -c %g "$SOCK")" \ -v "$SOCK:$SOCK" -v "$ROOT:$ROOT" -w "$ROOT" \ -e HOME=/home/build $GITCFG $GITNAME -e EMAIL="$(id -un)@$(hostname -f 2>/dev/null || hostname)" \ netclip-build-runner python3 scripts/release.py "$@"