ci: statisches Deploy nach /var/www/sites/website (Hugo build + rsync)
This commit is contained in:
+31
-22
@@ -1,7 +1,7 @@
|
|||||||
name: Build & Deploy Website
|
name: Build & Deploy Website
|
||||||
|
|
||||||
# Hugo-Projekt (kein Node!). Baut das Image via Dockerfile (Hugo-Build im Container)
|
# Hugo-Projekt. Baut die statische Seite und legt sie in den Webroot
|
||||||
# und startet den nginx-Container (Port 8066) neu. Runner + nginx laufen auf 10.161.30.38.
|
# /var/www/sites/website/ auf 10.161.30.38 (Runner läuft dort). Davor: Nginx Proxy Manager.
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
@@ -12,37 +12,46 @@ concurrency:
|
|||||||
group: deploy-main
|
group: deploy-main
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
env:
|
||||||
|
HUGO_VERSION: "0.148.2"
|
||||||
|
WEBROOT: /var/www/sites/website
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
deploy:
|
||||||
# WICHTIG: Muss zu einem Label deines Gitea-Runners passen (Gitea → Admin/Repo → Runners).
|
# Muss zu einem Label deines Gitea-Runners passen. Der Runner MUSS auf dem Host
|
||||||
# Der Runner braucht Zugriff auf Docker (Host-Runner ODER Container-Runner mit
|
# laufen (Host-Modus) und Schreibrechte auf ${WEBROOT} haben – sonst kommt er
|
||||||
# gemountetem /var/run/docker.sock). Ohne Docker-Zugriff schlägt der Deploy fehl.
|
# nicht an den Webroot (Container-Runner sieht das Host-Dateisystem nicht).
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout inkl. Git LFS
|
- name: Checkout inkl. Git LFS
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
lfs: true # ZWINGEND – sonst kommen LFS-Pointer statt Bilder/Fonts an
|
lfs: true # ZWINGEND – sonst LFS-Pointer statt Bilder/Fonts
|
||||||
fetch-depth: 1
|
fetch-depth: 1
|
||||||
|
|
||||||
- name: LFS-Dateien holen
|
- name: LFS-Dateien holen
|
||||||
run: git lfs pull
|
run: git lfs pull
|
||||||
|
|
||||||
- name: Container bauen & neu starten
|
- name: Werkzeuge sicherstellen (Hugo extended, rsync)
|
||||||
run: docker compose up -d --build --remove-orphans
|
|
||||||
|
|
||||||
- name: Alte Images aufräumen
|
|
||||||
run: docker image prune -f
|
|
||||||
|
|
||||||
- name: Healthcheck (:8066)
|
|
||||||
run: |
|
run: |
|
||||||
for i in $(seq 1 20); do
|
set -e
|
||||||
if wget -qO- http://localhost:8066/ >/dev/null 2>&1; then
|
command -v rsync >/dev/null || (apt-get update -qq && apt-get install -yqq rsync ca-certificates curl)
|
||||||
echo "OK: Seite antwortet auf :8066"; exit 0
|
if ! command -v hugo >/dev/null 2>&1 || ! hugo version | grep -q "v${HUGO_VERSION}"; then
|
||||||
fi
|
curl -fsSL "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" -o /tmp/hugo.tgz
|
||||||
echo "warte auf Container … ($i/20)"; sleep 3
|
tar -xzf /tmp/hugo.tgz -C /usr/local/bin hugo
|
||||||
done
|
fi
|
||||||
echo "FEHLER: Seite antwortet nicht auf :8066"
|
hugo version
|
||||||
docker compose logs --tail=50 || true
|
|
||||||
exit 1
|
- name: Seite bauen
|
||||||
|
run: hugo --gc --minify
|
||||||
|
|
||||||
|
- name: In den Webroot deployen
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
mkdir -p "${WEBROOT}"
|
||||||
|
rsync -a --delete public/ "${WEBROOT}/"
|
||||||
|
echo "Deployt nach ${WEBROOT} ($(find "${WEBROOT}" -type f | wc -l) Dateien)"
|
||||||
|
|
||||||
|
- name: Prüfen
|
||||||
|
run: test -f "${WEBROOT}/index.html" && echo "OK: index.html im Webroot vorhanden"
|
||||||
|
|||||||
Reference in New Issue
Block a user