name: Deploy on: push: branches: - master jobs: build-and-deploy: runs-on: ubuntu-latest container: node:20-bookworm steps: - name: Code auschecken uses: actions/checkout@v4 - name: Node-Abhängigkeiten installieren run: npm ci - name: CSS bauen run: npm run build:css - name: Deploy-Tools installieren run: | apt-get update apt-get install -y --no-install-recommends openssh-client rsync # Benötigte Repo-Secrets (Gitea: Repo -> Settings -> Actions -> Secrets): # STRATO_SSH_HOST z.B. sftp.strato.de # STRATO_SSH_PORT meist 22 # STRATO_SSH_USER dein Strato-SSH/SFTP-Benutzername # STRATO_SSH_KEY privater SSH-Key (nur der zugehörige Public Key liegt bei Strato) # STRATO_REMOTE_PATH Zielverzeichnis auf dem Webspace, z.B. / - name: Nach Strato deployen env: SSH_PRIVATE_KEY: ${{ secrets.STRATO_SSH_KEY }} SSH_HOST: ${{ secrets.STRATO_SSH_HOST }} SSH_PORT: ${{ secrets.STRATO_SSH_PORT }} SSH_USER: ${{ secrets.STRATO_SSH_USER }} REMOTE_PATH: ${{ secrets.STRATO_REMOTE_PATH }} run: | mkdir -p ~/.ssh echo "$SSH_PRIVATE_KEY" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key ssh-keyscan -p "${SSH_PORT:-22}" "$SSH_HOST" >> ~/.ssh/known_hosts 2>/dev/null rsync -avz --delete \ -e "ssh -i ~/.ssh/deploy_key -p ${SSH_PORT:-22} -o StrictHostKeyChecking=yes" \ --exclude='.git/' \ --exclude='.gitea/' \ --exclude='node_modules/' \ --exclude='package.json' \ --exclude='package-lock.json' \ --exclude='.gitignore' \ --exclude='css/styles.css' \ ./ "$SSH_USER@$SSH_HOST:$REMOTE_PATH"