feat(andreknie.de): improve accessibility and initial loading
This commit is contained in:
@@ -18,6 +18,10 @@ jobs:
|
||||
run: |
|
||||
npm ci
|
||||
npm run build
|
||||
node scripts/check-bundle.mjs
|
||||
test -s dist/index.html
|
||||
test -d dist/assets
|
||||
test -n "$(find dist/assets -type f -print -quit)"
|
||||
|
||||
- name: Copy project files to VM
|
||||
uses: appleboy/scp-action@v0.1.7
|
||||
@@ -25,7 +29,7 @@ jobs:
|
||||
host: ${{ secrets.DEPLOY_SSH_HOST }}
|
||||
username: ${{ secrets.DEPLOY_SSH_USER }}
|
||||
key: ${{ secrets.DEPLOY_SSH_KEY }}
|
||||
source: "Caddyfile,*,dist/**,dist/.*"
|
||||
source: "Caddyfile,docker-compose.yml,Dockerfile,server/**,package.json,package-lock.json,dist/**,dist/.*"
|
||||
target: "/opt/orchestrator/privat/CV/andreknie.de"
|
||||
|
||||
- name: Execute Deployment on VM
|
||||
@@ -55,15 +59,36 @@ jobs:
|
||||
HASH_SALT=${{ secrets.UMAMI_HASH_SALT }}
|
||||
EOF
|
||||
|
||||
# 2. Frontend-Build in den Caddy-Ordner verschieben
|
||||
mkdir -p site
|
||||
# Wenn dist existiert, kopiere den Inhalt
|
||||
if [ -d "dist" ]; then
|
||||
cp -r dist/* site/ || true
|
||||
cp -r dist/.* site/ 2>/dev/null || true
|
||||
else
|
||||
echo "FEHLER: dist Ordner existiert nicht!"
|
||||
# 2. Vollständiges Frontend als begrenztes Release vorbereiten.
|
||||
# Die Release-ID stammt aus dem Commit und bleibt rückverfolgbar.
|
||||
test -s dist/index.html
|
||||
test -d dist/assets
|
||||
release_id="${GITHUB_SHA:-manual-$(date -u +%Y%m%d%H%M%S)}"
|
||||
case "$release_id" in
|
||||
(*[!A-Za-z0-9._-]*) echo "Ungültige Release-ID"; exit 1 ;;
|
||||
esac
|
||||
release_dir="releases/release-${release_id}"
|
||||
previous_dir="releases/previous-${release_id}"
|
||||
mkdir -p releases
|
||||
if [ -e "$release_dir" ]; then rm -rf -- "$release_dir"; fi
|
||||
mkdir -p "$release_dir"
|
||||
cp -a dist/. "$release_dir/"
|
||||
test -s "$release_dir/index.html"
|
||||
test -n "$(find "$release_dir/assets" -type f -print -quit)"
|
||||
|
||||
rollback() {
|
||||
if [ -d "$previous_dir" ]; then
|
||||
rm -rf -- site
|
||||
mv -- "$previous_dir" site
|
||||
echo "Rollback auf das vorherige Release ausgeführt."
|
||||
fi
|
||||
}
|
||||
trap rollback ERR
|
||||
if [ -e site ]; then
|
||||
rm -rf -- "$previous_dir"
|
||||
mv -- site "$previous_dir"
|
||||
fi
|
||||
mv -- "$release_dir" site
|
||||
|
||||
# Debugging: Zeige an, ob die Dateien wirklich da sind
|
||||
echo "INHALT VON SITE:"
|
||||
@@ -77,3 +102,15 @@ jobs:
|
||||
docker compose exec -T caddy grep -n "Content-Security-Policy" /etc/caddy/Caddyfile
|
||||
docker compose exec -T caddy caddy reload --config /etc/caddy/Caddyfile || true
|
||||
docker compose up -d --force-recreate caddy
|
||||
trap - ERR
|
||||
|
||||
# Höchstens die fünf neuesten begrenzten Release-Verzeichnisse
|
||||
# behalten; site und der aktuelle vorherige Stand bleiben getrennt.
|
||||
old_releases=$(find releases -mindepth 1 -maxdepth 1 -type d -name 'release-*' | sort -r | tail -n +6)
|
||||
if [ -n "$old_releases" ]; then
|
||||
while IFS= read -r old_release; do
|
||||
[ -z "$old_release" ] || rm -rf -- "$old_release"
|
||||
done <<EOF
|
||||
$old_releases
|
||||
EOF
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user