--- # ============================================================================ # .drone.yml — Infra Maintenance (Authelia Update via Bastille/Jail) # # Ziel: # - Authelia Update-Script im Authelia-Jail nativ ausführen (kein Docker) # - Secrets (SSH + Matrix) aus Vault ziehen # - Exit-Codes sauber an Drone übergeben (für Auswertung/Benachrichtigung) # - Matrix-Benachrichtigung bei Erfolg/Fehler (inkl. Check-Only vs Apply) # # Architektur: # - Drone Pipeline type: ssh # -> verbindet sich auf den FreeBSD Host (XigmaNAS/FreeBSD) # -> führt dort "bastille cmd authelia ..." aus # -> damit läuft alles im echten Jail mit echtem service(8) # # Voraussetzungen: # - Authelia-Jail heißt: authelia (ggf. anpassen) # - Script liegt IM Jail unter: /root/authelia-update.sh (ggf. anpassen) # - Bastille ist auf dem Host vorhanden und korrekt konfiguriert # - Drone Vault Secret-Plugin ist aktiv (dein Setup) # - Matrix Bot Credentials in Vault vorhanden (siehe Secrets unten) # # Trigger-Konzept (empfohlen): # - event: cron -> check-only (kein apply), Exit 0 oder 10 etc. # - event: manual -> apply + auto-revert # # Hinweis: # - Der Matrix-Notify Step läuft in einem Container (Spotlightkid Plugin). # Das ist OK, weil es nur HTTP Richtung Matrix macht und keine System- # Operationen auf FreeBSD ausführt. # ============================================================================ # ----------------------------- # SSH Secrets aus Vault (Host) # ----------------------------- --- kind: secret name: username_docker get: path: secret/data/docker/ssh name: username --- kind: secret name: password_docker get: path: secret/data/docker/ssh name: password # ---------------------------------------- # Matrix Bot Secrets aus Vault (Notify) # ---------------------------------------- --- kind: secret name: password_matrix get: path: secret/data/matrix/bot/drone-bot name: password --- kind: secret name: userid_matrix get: path: secret/data/matrix/bot/drone-bot name: userid --- kind: secret name: roomid_matrix get: path: secret/data/matrix/bot/drone-bot name: roomid # ============================================================ # Pipeline 1: Authelia CHECK (kein apply) # - Läuft z. B. per Drone Cron # - Führt das Script ohne Flags aus => nur prüfen # ============================================================ --- kind: pipeline type: ssh name: authelia_check server: host: 172.16.1.53 user: from_secret: username_docker password: from_secret: password_docker clone: depth: 50 steps: - name: check_authelia_update commands: # Script läuft im Jail, nativ, keine Containerisierung # Check-only: KEIN --apply - timeout 5m bastille cmd authelia /root/authelia-update.sh trigger: event: - cron # ============================================================ # Pipeline 2: Authelia APPLY (Update + auto-revert) # - Läuft bewusst per "manual" Trigger # - Führt Update durch und nutzt Auto-Revert bei Fehlstart # ============================================================ --- kind: pipeline type: ssh name: authelia_apply server: host: 172.16.1.53 user: from_secret: username_docker password: from_secret: password_docker clone: depth: 50 steps: - name: apply_authelia_update commands: # Apply + auto-revert (Rollback falls Dienst nach Update nicht sauber läuft) - timeout 10m bastille cmd authelia /root/authelia-update.sh --apply --auto-revert trigger: event: - manual # ============================================================ # Pipeline 3: Matrix Notify (Erfolg/Fehler) # - Läuft nach authelia_check UND authelia_apply # - Sendet Status, Build-Infos, Commit-Link # ============================================================ --- kind: pipeline name: matrix_message depends_on: - authelia_check - authelia_apply trigger: status: - success - failure steps: - name: notify image: spotlightkid/drone-matrixchat-notify settings: homeserver: 'https://matrix.familie-berner.de' roomid: from_secret: roomid_matrix userid: from_secret: userid_matrix password: from_secret: password_matrix markdown: 'yes' template: | **Authelia Update** repo: `${DRONE_REPO}` branch: `${DRONE_BRANCH}` build: `#${DRONE_BUILD_NUMBER}` status: **${DRONE_BUILD_STATUS}** event: `${DRONE_BUILD_EVENT}` commit: ${DRONE_COMMIT_LINK} pr: `${DRONE_PULL_REQUEST}` ${DRONE_PULL_REQUEST_TITLE} when: branch: - master - main