So erstellen Sie eine einfache CD-Pipeline für Ihr nodejs-Projekt

Was wir brauchen?

  • Gitlab-Konto
  • SSH
  • PM2
  • VPS
  • Git
  • Nodejs

Was ist eine CD?

Kontinuierliche Bereitstellung ist der Prozess der automatischen Bereitstellung einer Anwendung. Das Ziel dieser Vorgehensweise besteht darin, die Zeit zu minimieren, in der eine neue Codezeile verschoben und live in der Produktion verwendet wird.

Pipeline einrichten

Gitlab-Runner:

Da wir Gitlab verwenden werden, um unsere Pipeline einzurichten, brauchen wir einen Runner.

  • Läufer ist eine Umgebung, um Ihre Jobs und Tests auszuführen und Ihren Code bereitzustellen.

In diesem Fall verwenden Sie entweder einen gemeinsam genutzten Runner oder Sie erweitern selbst einen. Wir verwenden einen gemeinsam genutzten, aber wenn Sie ihn einrichten möchten, lesen Sie die Dokumentation hier:Gitlab Runner.

Gitlab-CI-Datei:

Erstellen Sie .gitlab-ci.yml Datei im Stammverzeichnis Ihres Projekts.
Also, was wir dort schreiben werden, werden wir diesen Schritten folgen:

  1. Aktualisieren des Linux-Paketmanagers
  2. Git installieren
  3. SSH-Schlüssel einrichten
  4. Verbinde dich mit ssh mit unserem Server
  5. Pull unser Projekt von git
  6. Installieren Sie Abhängigkeiten
  7. Erstellen
  8. Server mit pm2 neu starten
  before_script:
 - apt-get update -qq
 - apt-get install -qq git
 # Setup SSH deploy keys
 - 'which  ssh-agent  ||  (  apt-get  install  -qq  openssh-client  )'
 - eval $(ssh-agent -s)
 - ssh-add <(echo "$SSH_PRIVATE_KEY")
 - mkdir -p ~/.ssh
 - '[[  -f  /.dockerenv  ]]  &&  echo  -e  "Host  *\n\tStrictHostKeyChecking  no\n\n"  >  ~/.ssh/config'

deploy_staging:
 tags:
 - docker
 type: deploy
 environment:
 name: testing
 url: "$VPS_IP"
 script:
 - ssh root@"$VPS_IP" "cd /root/app/allomakkah && git fetch origin master && git reset --hard FETCH_HEAD && git clean -df && npm i && npm run prod-build"
 - ssh root@"$VPS_IP" "pm2 restart hiddy"
 only:
 - master

Lassen Sie uns nun unsere Anwendung bereitstellen, die diese Pipeline automatisch ausführt, wenn wir aufgrund dieser Zeile auf den Master-Branch pushen:

only:
- master