name: Deploy go.vanityontour.de on: push: branches: [main] workflow_dispatch: jobs: deploy: runs-on: alpine container: image: node:20-alpine # Das Zielverzeichnis liegt auf demselben Host wie der Runner und wird # vom nginx-Container des Shlink-Stacks read-only gelesen. Direktes # Mounten spart den Umweg ueber SSH und damit einen Deploy-Key. # Freigegeben in /docker/act_runner/config.yaml (valid_volumes). volumes: - /docker/shlink/landingpage:/target steps: - name: rsync bereitstellen run: apk add --no-cache rsync - name: Checkout uses: actions/checkout@v4 - name: Deploy run: | rsync -a --delete \ --exclude '.git/' \ --exclude '.github/' \ --exclude '.forgejo/' \ --exclude '.claude/' \ --exclude '*.md' \ ./ /target/ echo "Deployed:" ls -la /target - name: Smoke-Test run: | apk add --no-cache curl for path in / /assets/css/style.css /robots.txt; do code=$(curl -s -o /dev/null -w '%{http_code}' "https://go.vanityontour.de${path}") echo " ${path} -> ${code}" [ "$code" = "200" ] || exit 1 done