Release-Skript mit automatischer Versionierung und Docker-Builds
- scripts/release.py: Version (patch/minor/major) automatisch hochzaehlen, CHANGELOG abschliessen, committen, taggen; --build baut alle Pakete in Docker - docker-build/: Build-Container fuer Windows (Wine + PyInstaller + Inno Setup), Linux und Android; Server-Image als docker-save-Archiv - Versionsanzeige im Desktop-Client und in der Android-App - Feste Android-Release-Signatur aus secrets/ (nicht im Git) - Windows-Icon im Repo, damit der Wine-Build ohne Qt-Fenster auskommt Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
5cbe6376f0
commit
af51ef5701
@@ -0,0 +1,12 @@
|
||||
# Build-Umgebung fuer die Android-App (JDK 17 + Android SDK)
|
||||
FROM eclipse-temurin:17-jdk-jammy
|
||||
ENV ANDROID_HOME=/opt/android-sdk ANDROID_SDK_ROOT=/opt/android-sdk
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends unzip wget && rm -rf /var/lib/apt/lists/* \
|
||||
&& mkdir -p $ANDROID_HOME/cmdline-tools && cd /tmp \
|
||||
&& wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O tools.zip \
|
||||
&& unzip -q tools.zip -d $ANDROID_HOME/cmdline-tools && mv $ANDROID_HOME/cmdline-tools/cmdline-tools $ANDROID_HOME/cmdline-tools/latest \
|
||||
&& rm tools.zip \
|
||||
&& yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses > /dev/null \
|
||||
&& $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platforms;android-35" "build-tools;35.0.0" > /dev/null
|
||||
COPY docker-build/build-android.sh /usr/local/bin/build-android.sh
|
||||
CMD ["sh", "/usr/local/bin/build-android.sh"]
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
# Laeuft im Container: /src (Repo, nur lesend) -> /out
|
||||
set -e
|
||||
rm -rf /work && mkdir -p /work && cp -r /src/client-android /work/ && mkdir -p /work/secrets
|
||||
[ -d /src/secrets ] && cp -r /src/secrets/. /work/secrets/
|
||||
cd /work/client-android && rm -rf .gradle build app/build
|
||||
rm -f local.properties
|
||||
./gradlew --no-daemon -q assembleRelease
|
||||
cp app/build/outputs/apk/release/app-release.apk "/out/NetClip-${VERSION}.apk"
|
||||
chown -R "${HOST_UID:-0}:${HOST_GID:-0}" /out
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
rm -rf /work && mkdir -p /work && cp -r /src/client-desktop /work/
|
||||
cd /work/client-desktop && rm -rf build dist netclip/__pycache__
|
||||
pip install -q -r requirements.txt
|
||||
python build.py --no-install
|
||||
cp dist/NetClip-linux-*.tar.gz "/out/NetClip-${VERSION}-linux-$(uname -m).tar.gz"
|
||||
chown -R "${HOST_UID:-0}:${HOST_GID:-0}" /out
|
||||
@@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
rm -rf /work && mkdir -p /work && cp -r /src/client-desktop /work/
|
||||
cd /work/client-desktop && rm -rf build dist netclip/__pycache__
|
||||
wine python -m pip install -q -r requirements.txt -c Z:/usr/local/bin/windows-constraints.txt
|
||||
wine python -m PyInstaller --noconfirm --clean netclip.spec
|
||||
ISCC=$(find /opt/wineprefix/drive_c -iname ISCC.exe | head -1)
|
||||
(cd packaging && xvfb-run -a wine "$ISCC" /Q windows-installer.iss)
|
||||
cp dist/NetClip-Setup-*.exe "/out/NetClip-${VERSION}-windows-setup.exe"
|
||||
(cd dist && zip -qr "/out/NetClip-${VERSION}-windows-portable.zip" NetClip)
|
||||
wineserver -w || true
|
||||
chown -R "${HOST_UID:-0}:${HOST_GID:-0}" /out
|
||||
@@ -0,0 +1,10 @@
|
||||
# Build-Umgebung fuer den Linux-Desktop-Client (PyInstaller). Debian 12 -> laeuft auf glibc >= 2.36.
|
||||
FROM python:3.12-slim-bookworm
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends binutils libgl1 libegl1 libxkbcommon0 \
|
||||
libxkbcommon-x11-0 libfontconfig1 libdbus-1-3 libglib2.0-0 libxcb-cursor0 libxcb-icccm4 libxcb-keysyms1 \
|
||||
libxcb-shape0 libxcb-image0 libxcb-render-util0 libxcb-randr0 libxcb-xinerama0 \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
COPY client-desktop/requirements.txt /tmp/requirements.txt
|
||||
RUN pip install --no-cache-dir -r /tmp/requirements.txt pyinstaller
|
||||
COPY docker-build/build-linux.sh /usr/local/bin/build-linux.sh
|
||||
CMD ["sh", "/usr/local/bin/build-linux.sh"]
|
||||
@@ -0,0 +1,3 @@
|
||||
# Neuere PySide6-Versionen laden unter Wine 9 nicht (QtCore-DLL), 6.8 ist Qt-LTS.
|
||||
PySide6-Essentials==6.8.3
|
||||
shiboken6==6.8.3
|
||||
@@ -0,0 +1,12 @@
|
||||
# Build-Umgebung fuer den Windows-Client: Windows-Python + PyInstaller + Inno Setup unter Wine
|
||||
FROM tobix/pywine:3.12
|
||||
ARG INNO_VERSION=6.7.3
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends xvfb xauth wget zip && rm -rf /var/lib/apt/lists/* \
|
||||
&& wget -q https://github.com/jrsoftware/issrc/releases/download/is-$(echo ${INNO_VERSION} | tr . _)/innosetup-${INNO_VERSION}.exe -O /tmp/is.exe \
|
||||
&& xvfb-run -a wine /tmp/is.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- /ALLUSERS \
|
||||
&& rm /tmp/is.exe && wineserver -w
|
||||
COPY client-desktop/requirements.txt docker-build/windows-constraints.txt /tmp/
|
||||
RUN wine python -m pip install --no-cache-dir -r Z:/tmp/requirements.txt -c Z:/tmp/windows-constraints.txt pyinstaller \
|
||||
&& wineserver -w
|
||||
COPY docker-build/build-windows.sh docker-build/windows-constraints.txt /usr/local/bin/
|
||||
CMD ["sh", "/usr/local/bin/build-windows.sh"]
|
||||
Reference in New Issue
Block a user