TT-016 — Makefile erstellen
Type: Story
Priority: High
Labels: makefile, tooling, build
Depends on: TT-014 (Go-Binary), TT-015 (Retention-Script)
Blocks: TT-017 (Integration-Test)
Summary
Erstelle das zentrale Makefile mit allen Build-, Test- und Deploy-Targets
für das Timetrack Flutter-Projekt.
Variablen
FLUTTER := $(HOME)/flutter/3.41.7/bin/flutter
JAVA_HOME ?= $(HOME)/java/17.0.13+11
ANDROID_HOME ?= $(HOME)/Android/sdk
ADB := $(ANDROID_HOME)/platform-tools/adb
BUILD_VERSION ?= 0.1.0
BUILD_NUMBER ?= 1
PORT ?= 8888
APK_NAME := timetrack-$(BUILD_VERSION)+$(BUILD_NUMBER).apk
APK_DIR := build/apk
APK_LATEST := $(APK_DIR)/timetrack.apk
SERVE_BIN := scripts/serve/serve
Targets
Dev-Targets
| Target |
Befehl |
Beschreibung |
help |
— |
Alle Targets mit Beschreibung ausgeben |
install |
flutter pub get |
Dependencies installieren |
generate |
flutter pub run build_runner build --delete-conflicting-outputs |
Code-Generierung |
test |
flutter test |
Alle Tests ausführen |
test_coverage |
flutter test --coverage + genhtml |
Tests mit Coverage-Report |
analyze |
flutter analyze |
Statische Analyse |
format |
dart format lib/ test/ |
Code formatieren |
clean |
flutter clean + rm -rf coverage/ |
Build-Artefakte löschen |
Build-Targets
| Target |
Beschreibung |
build_serve |
Go-Binary scripts/serve/serve kompilieren |
build_android |
APK (release) + SHA256 + Symlink + Retention |
build_aab |
App Bundle für Play Store |
build_linux |
Linux Desktop-App |
build_web |
Web-App (debug) |
build_all |
APK + Linux + Web nacheinander |
Deploy-Targets
| Target |
Beschreibung |
install_android |
APK via ADB auf verbundenes Gerät installieren |
deploy_android |
build_android + install_android |
serve_apk |
Go-Server starten (kompiliert Binary falls nötig) |
Info-Targets
| Target |
Beschreibung |
db_schema |
Drift-Schema-Version und Tabellennamen anzeigen |
build_android — Detail-Logik
build_android:
# 1. JAVA_HOME und ANDROID_HOME prüfen
# 2. flutter build apk --release --build-name --build-number
# 3. mkdir -p $(APK_DIR)
# 4. cp build/app/outputs/flutter-apk/app-release.apk $(APK_DIR)/$(APK_NAME)
# 5. sha256sum $(APK_DIR)/$(APK_NAME) | tee $(APK_DIR)/$(APK_NAME).sha256
# 6. ln -sf $(APK_NAME) $(APK_LATEST)
# 7. bash scripts/apk_retention.sh --dir $(APK_DIR)
# 8. Ausgabe: Pfad, Größe, SHA256, serve_apk-Hinweis
serve_apk — Dependency auf Binary
serve_apk: $(SERVE_BIN) # Auto-kompilieren falls binary fehlt
$(SERVE_BIN) --dir $(APK_DIR) --port $(PORT)
$(SERVE_BIN):
cd scripts/serve && go build -o serve .
Acceptance Criteria
Files to create