Files
2026-09-17 20:56:34 +02:00

55 lines
1.8 KiB
YAML

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"