- build.sh (release, build, test) startet einen temporaeren Runner-Container (Python, Git, Docker-CLI), der die Build-Container ueber den Docker-Socket startet - release.py: Quellexport unter releases/ statt /tmp (Host-Pfade fuer Bind-Mounts), Test-Befehl in Docker, Git-Identitaet vorab pruefen, bei Commit-Fehler Versionen zuruecknehmen - Android-Build-Image enthaelt Platform-Tools fest Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
36 lines
1.7 KiB
Bash
Executable File
36 lines
1.7 KiB
Bash
Executable File
#!/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<version>/
|
|
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 "$@"
|