name: Build and Deploy on: push: branches: - main - dev jobs: build-and-deploy: runs-on: debian-latest steps: - name: Repository auschecken uses: actions/checkout@v4 - name: Abhängigkeiten installieren run: npm ci # --- BRANCH-SPEZIFISCHE VARIABLEN SETZEN --- - name: Konfiguration für Produktiv (main) if: github.ref == 'refs/heads/main' run: | echo "ASTRO_SITE_URL=https://iten.pro" >> $GITHUB_ENV echo "ASTRO_BASE_PATH=/" >> $GITHUB_ENV echo "DEPLOY_HOST=ssh.netzone.ch" >> $GITHUB_ENV echo "TARGET_PATH=~/htdocs/" >> $GITHUB_ENV echo "DEPLOY_USER=${{ secrets.PROD_SSH_USERNAME }}" >> $GITHUB_ENV echo "DEPLOY_KEY<> $GITHUB_ENV echo "${{ secrets.PROD_SSH_PRIVATE_KEY }}" >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV - name: Konfiguration für Test (dev) if: github.ref == 'refs/heads/dev' run: | echo "ASTRO_SITE_URL=https://home.iten.pro" >> $GITHUB_ENV echo "ASTRO_BASE_PATH=/test" >> $GITHUB_ENV echo "DEPLOY_HOST=10.0.10.107" >> $GITHUB_ENV echo "TARGET_PATH=/var/www/pages/test" >> $GITHUB_ENV echo "DEPLOY_USER=${{ secrets.DEV_SSH_USERNAME }}" >> $GITHUB_ENV echo "DEPLOY_KEY<> $GITHUB_ENV echo "${{ secrets.DEV_SSH_PRIVATE_KEY }}" >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV # --- BUILD UND DEPLOYMENT --- - name: Astro Build ausführen run: npm run build - name: SSH-Umgebung vorbereiten run: | mkdir -p ~/.ssh echo "$DEPLOY_KEY" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key # Nutzt nun die dynamische Host-Variable ssh-keyscan -H "$DEPLOY_HOST" >> ~/.ssh/known_hosts - name: Deploy via rsync run: | # Nutzt DEPLOY_USER, DEPLOY_HOST und TARGET_PATH rsync -avz --delete -e "ssh -p 22 -i ~/.ssh/deploy_key" dist/ $DEPLOY_USER@$DEPLOY_HOST:$TARGET_PATH