npm-Deployment mit rsync¶
npm ist ein Paketmanager für die JavaScript-Laufzeitumgebung Node.js, und mit rsync können die Daten mit dem entfernten Server synchronisiert werden.
Erste Schritte¶
Umgebungsvariablen einrichten
DEPLOY_DIR
Verzeichnis auf dem entfernten Server, in das verteilt werden soll.
DEPLOY_HOST
Hostname oder IP-Adresse des Servers, auf den verteilt werden soll.
DEPLOY_KEY_FILE
Pfad zu einem privaten SSH-Schlüssel, der zur Authentifizierung gegenüber dem Server verwendet werden soll.
DEPLOY_USER
Name des SSH-Accounts.
KNOWN_HOSTS_FILE
Pfad zu einer Datei mit vordefinierten
known_hosts
-Einträgen, mit denen die Verbindung überprüft werden soll.
Einrichten der CI/CD-Pipeline
.gitlab-ci.yml¶stages: - deploy deploy-static-assets: stage: deploy rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH environment: name: prod deployment_tier: production image: node:alpine script: - apk add --no-cache git nodejs npm openssh-client-default rsync - chmod 0600 "$DEPLOY_KEY_FILE" - ./deploy.sh
- Zeile 13
installiert die für das Bauen und Hochladen erforderlichen Pakete
- Zeile 14
ändert die Zugriffsberechtigungen für den ssh-Schlüssel
- Zeile 15
ruft die
deploy.sh
-Datei auf
Verschieben der statischen Dateien auf den Server
deploy.sh¶1#!/bin/sh 2set -e 3 4# Deploy static assets to a server via rsync. 5 6# Create SSH config. 7cat >deploy.ssh_config <<-END 8 Host deploy 9 HostName $DEPLOY_HOST 10 User $DEPLOY_USER 11 IdentityFile $DEPLOY_KEY_FILE 12 UserKnownHostsFile $KNOWN_HOSTS_FILE 13END 14 15 16# Build the JavaScript application & related files. 17cd vite-app 18npm ci 19npx vite build 20 21# Deploy the application and GeoJSON data. 22rsync \ 23 -rtlv \ 24 --rsh 'ssh -F ../deploy.ssh_config' \ 25 --rsync-path "mkdir -p \"$DEPLOY_DIR\" && rsync" \ 26 ../data/cusy.geojson \ 27 cusy.html \ 28 dist/cusy-map.css \ 29 dist/cusy-map.js \ 30 dist/cusy-map.js.map \ 31 "deploy:$DEPLOY_DIR"
- Zeile 7–13
erstellt die ssh-Konfigurationsdatei
- Zeile 18
installiert die Abhängigkeiten des Projekts aus der
vite-app/package.json
-DateiSiehe auch
- Zeile 19
erstellt das vite-Projekt für die Produktion.
- Zeile 24
verschiebt die ssh-Konfiguration auf den Server
- Zeile 25–31
verschiebt die Anwendung und GeoJSON-Daten auf den Server