feat: add release workflow and update docs

This commit is contained in:
2026-03-03 09:40:18 +00:00
parent 6f9533ec65
commit 0d7ae8bbb7
4 changed files with 118 additions and 2 deletions

View File

@@ -19,6 +19,18 @@ Danach erreichbar unter:
./update.sh
```
## Neues Release bauen & pushen
```bash
./release.sh v1.2.3
```
Optional direkt `.env` auf den neuen Tag setzen und deployen:
```bash
./release.sh v1.2.3 --set-env --deploy
```
Für ein neues Release zuerst den Tag in `.env` anpassen:
```dotenv
@@ -31,6 +43,7 @@ PDF_TO_ICS_IMAGE=git.file-archive.de/webfarben/pdf_to_ics:v1.2.2
- `.env.example` Konfigurationsvorlage
- `deploy.sh` Erststart
- `update.sh` Update-Workflow
- `release.sh` Build + Push für neue Image-Tags
- `WEB_README.md` ausführliche Web-/Server-Doku
## Hinweis

View File

@@ -20,6 +20,18 @@ cp .env.example .env
./update.sh
```
## Release (neues Image bauen + pushen)
```bash
./release.sh v1.2.3
```
Optional direkt `.env` auf das neue Tag setzen und deployen:
```bash
./release.sh v1.2.3 --set-env --deploy
```
Für ein neues Release den Tag in `.env` erhöhen, z. B.:
```dotenv
@@ -68,7 +80,7 @@ Für öffentliches Deployment zusätzlich Reverse Proxy + HTTPS verwenden.
```bash
git clone --filter=blob:none --sparse <REPO_URL> pdf_to_ics
cd pdf_to_ics
git sparse-checkout set docker-compose.deploy.yml .env.example deploy.sh update.sh README.md WEB_README.md
git sparse-checkout set docker-compose.deploy.yml .env.example deploy.sh update.sh release.sh README.md WEB_README.md
```
Hinweis: Ein bestehender Voll-Clone wird dadurch nicht automatisch kleiner.

91
release.sh Executable file
View File

@@ -0,0 +1,91 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
IMAGE_REPO="git.file-archive.de/webfarben/pdf_to_ics"
SET_ENV=false
RUN_DEPLOY=false
usage() {
echo "Usage: ./release.sh <version-tag> [--set-env] [--deploy]"
echo ""
echo "Examples:"
echo " ./release.sh v1.2.3"
echo " ./release.sh v1.2.3 --set-env"
echo " ./release.sh v1.2.3 --set-env --deploy"
}
if [ $# -eq 1 ] && [[ "$1" == "-h" || "$1" == "--help" ]]; then
usage
exit 0
fi
if [ $# -lt 1 ]; then
usage
exit 1
fi
TAG="$1"
shift
if [[ ! "$TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "❌ Fehler: Tag muss im Format vX.Y.Z sein (z. B. v1.2.3)."
exit 1
fi
while [ $# -gt 0 ]; do
case "$1" in
--set-env)
SET_ENV=true
;;
--deploy)
RUN_DEPLOY=true
;;
-h|--help)
usage
exit 0
;;
*)
echo "❌ Unbekannte Option: $1"
usage
exit 1
;;
esac
shift
done
if ! command -v docker >/dev/null 2>&1; then
echo "❌ Fehler: docker ist nicht installiert oder nicht im PATH."
exit 1
fi
IMAGE_REF="${IMAGE_REPO}:${TAG}"
echo "🏗️ Baue Image: $IMAGE_REF"
docker build -t "$IMAGE_REF" .
echo "⬆️ Pushe Image: $IMAGE_REF"
docker push "$IMAGE_REF"
if [ "$SET_ENV" = true ]; then
if [ -f ".env" ]; then
sed -i "s|^PDF_TO_ICS_IMAGE=.*|PDF_TO_ICS_IMAGE=$IMAGE_REF|" .env
echo "✅ .env auf $IMAGE_REF gesetzt."
else
echo " .env nicht gefunden übersprungen."
fi
fi
if [ "$RUN_DEPLOY" = true ]; then
if [ -x "./deploy.sh" ]; then
echo "🚀 Starte Deploy mit neuem Tag..."
./deploy.sh
else
echo "❌ Fehler: deploy.sh nicht gefunden oder nicht ausführbar."
exit 1
fi
fi
echo "✅ Release abgeschlossen: $IMAGE_REF"

View File

@@ -118,7 +118,7 @@
<section class="image-guide" aria-label="PDF-Export in iPD">
<h2>PDF-Export in iPD</h2>
<p>Die folgenden Bilder zeigen, wie der Dienstplan in iPD als PDF exportiert wird.</p>
<p class="server-note">Hinweis: Die Bilder werden nur angezeigt, wenn die Seite über den laufenden Webserver geöffnet wird (z. B. http://127.0.0.1:8000/) und nicht als lokale Datei in der Editor-Vorschau.</p>
<p class="server-note">Hinweis: Da der Benutzer im Arbeitsprofile keine Daten exportieren kann, bleibt nur die Möglichkeit das PDF per Dienstmail an eine private Mailadresse zu senden und anschließend hier hochzuladen.</p>
<div class="image-grid">
<figure class="image-item">
<img src="{{ request.url_for('static', path='images/iPD01.jpg') }}" alt="iPD Schritt 1: Dienstplanansicht öffnen" loading="lazy">