feat: aggiungi container Docker dev e build per Flutter
docker/build/: build headless APK Android - Dockerfile: Ubuntu 22.04 + Java 17 + Flutter stable + Android SDK - build.sh: genera android/ automaticamente se mancante, poi flutter build apk; --release aggiunge zipalign + apksigner docker/dev/: ambiente di sviluppo web con hot reload - Dockerfile: Ubuntu 22.04 + Flutter stable (solo web, senza Android SDK) - docker-compose.yml: espone porta 5173, monta il progetto come volume - entrypoint.sh: inizializza web/ se mancante, flutter pub get, flutter run -d web-server su 0.0.0.0:5173 docker/README.md: documentazione aggiornata per entrambi i container; rimossi Dockerfile e build.sh Vue/Capacitor non più usati. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Executable
+77
@@ -0,0 +1,77 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
|
||||
RELEASE=false
|
||||
|
||||
for arg in "$@"; do
|
||||
[[ "$arg" == "--release" ]] && RELEASE=true
|
||||
done
|
||||
|
||||
echo "→ Build immagine biteplan-build..."
|
||||
docker build -t biteplan-build "${SCRIPT_DIR}"
|
||||
|
||||
if [[ ! -d "${PROJECT_ROOT}/android" ]]; then
|
||||
echo "→ Cartella android/ non trovata, eseguo flutter create..."
|
||||
docker run --rm \
|
||||
-v "${PROJECT_ROOT}:/workspace" \
|
||||
biteplan-build \
|
||||
bash -c "cd /workspace && flutter create --project-name biteplan --org com.biteplan --platforms=android ."
|
||||
fi
|
||||
|
||||
mkdir -p "${PROJECT_ROOT}/dist"
|
||||
|
||||
if [[ "$RELEASE" == "true" ]]; then
|
||||
KEYSTORE="${SCRIPT_DIR}/../biteplan.jks"
|
||||
if [[ ! -f "$KEYSTORE" ]]; then
|
||||
echo "ERRORE: keystore non trovato in docker/biteplan.jks"
|
||||
echo "Generalo con:"
|
||||
echo " keytool -genkey -v -keystore docker/biteplan.jks -alias biteplan -keyalg RSA -keysize 2048 -validity 10000"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "→ Building release APK..."
|
||||
docker run --rm \
|
||||
-v "${PROJECT_ROOT}:/workspace" \
|
||||
-v "${HOME}/.gradle:/root/.gradle" \
|
||||
biteplan-build \
|
||||
bash -c "cd /workspace && flutter pub get && flutter build apk --release"
|
||||
|
||||
echo "→ Zipalign..."
|
||||
docker run --rm \
|
||||
-v "${PROJECT_ROOT}:/workspace" \
|
||||
biteplan-build \
|
||||
bash -c "zipalign -v -p 4 \
|
||||
/workspace/build/app/outputs/flutter-apk/app-release.apk \
|
||||
/workspace/dist/biteplan-aligned.apk"
|
||||
|
||||
echo "→ Firma APK..."
|
||||
docker run --rm \
|
||||
-v "${PROJECT_ROOT}:/workspace" \
|
||||
-v "$(realpath "${KEYSTORE%/*}"):/keystore:ro" \
|
||||
biteplan-build \
|
||||
bash -c "apksigner sign \
|
||||
--ks /keystore/biteplan.jks \
|
||||
--out /workspace/dist/biteplan-release.apk \
|
||||
/workspace/dist/biteplan-aligned.apk && \
|
||||
rm -f /workspace/dist/biteplan-aligned.apk && \
|
||||
apksigner verify --verbose /workspace/dist/biteplan-release.apk"
|
||||
|
||||
echo ""
|
||||
echo "✓ Release APK: dist/biteplan-release.apk"
|
||||
|
||||
else
|
||||
echo "→ Building debug APK..."
|
||||
docker run --rm \
|
||||
-v "${PROJECT_ROOT}:/workspace" \
|
||||
-v "${HOME}/.gradle:/root/.gradle" \
|
||||
biteplan-build \
|
||||
bash -c "cd /workspace && flutter pub get && flutter build apk --debug"
|
||||
|
||||
cp "${PROJECT_ROOT}/build/app/outputs/flutter-apk/app-debug.apk" \
|
||||
"${PROJECT_ROOT}/dist/biteplan-debug.apk"
|
||||
|
||||
echo ""
|
||||
echo "✓ Debug APK: dist/biteplan-debug.apk"
|
||||
fi
|
||||
Reference in New Issue
Block a user