Wie funktioniert die Bereitstellung auf Remote-Servern?

8

Ich bin ein wenig neu in der Versionskontrolle und Implementierungsumgebungen und ich bin damit fertig geworden, etwas darüber zu lernen: Wie funktionieren Implementierungsumgebungen, wenn Entwickler können nicht auf demselben lokalen Computer arbeiten und müssen immer auf einem Remote-Server arbeiten ?

Wie sollte der Fluss der Implementierungsumgebungen nach bewährten Verfahren eingerichtet werden?

In diesem Beispiel habe ich drei Bereitstellungsumgebungen berücksichtigt: Entwicklung , Bereitstellung und Produktion . und drei Speicherumgebungen: lokal , Repository Server und finaler Server .

Das ist das Flussdiagramm, das ich mir ausgedacht habe, aber ich habe keine Ahnung, ob es richtig ist oder wie es richtig umgesetzt wird:

PS. Ich dachte, die Staging-Tests auf dem Server könnten den Zugriff durch Login- oder IP-Checks eingeschränkt haben, falls Sie sich fragen sollten.

    
Dante 07.04.2017, 12:43
quelle

1 Antwort

4

Ich kann Ihnen (meiner Erfahrung nach) eine gute und unverfälschte Praxis geben, dies ist nicht der einzige Ansatz, da es keinen einzigartigen Standard gibt, wie man an allen Projekten arbeitet:

  • Verwenden Sie ein verteiltes Versionskontrollsystem (wie git / github):

    • Erstellen Sie ein privates / öffentliches Repository, um Ihr Projekt zu bearbeiten
  • lokale Entwicklung:

    • Entwickler werden das Projekt aus Ihrem Repo herausholen und dazu beitragen, es wird empfohlen, dass jeder an einem Zweig arbeitet und einen neuen Zweig für jedes neue Feature erstellt
    • In Ihrem Team ist einer dafür verantwortlich, die Zweige, die fertig sind, mit dem Zweig master
    • zusammenzuführen
    • Ich schlage dringend vor, während der Entwicklung an einer virtuellen Maschine zu arbeiten:
      • Isolieren der Dev-Umgebung von der Host-Maschine und Umgang mit Abhängigkeiten
      • Eine virtuelle Maschine mit dem fernen Produktionsserver identisch zu machen
      • Einfaches Zurücksetzen, Entfernen, Reproduzieren
      • ...
      • Ich schlage vor, VirtualBox für den VM-Anbieter und Vagrant zu verwenden für die Bereitstellung
      • Ich schlage vor, dass Ihr Projektordner ein shared folder zwischen Ihrem Hostcomputer und Ihrer VM ist. Sie schreiben also Ihre Quellcodes auf Ihrem Host-Betriebssystem mit dem Editor, den Sie lieben, und gleichzeitig existiert dieser Code und wird ausgeführt in deiner VM, ist das nicht unglaublich toll?!
    • Wenn Sie mit python arbeiten, empfehle ich auch dringend, virtuelle Umgebungen zu verwenden (wie virtualenv oder anaconda ), um innere Abhängigkeiten zu isolieren und zu verwalten
    • Dann kann jeder Entwickler nach dem Schreiben von Quellcode seine Änderungen an das Repository übergeben und
    • pushen
    • Ich empfehle die Verwendung von Tools zur Projektautomatisierung wie ( Struktur / fabtools für Python):
      • Wenn Sie ein Skript oder etwas erstellen, das mit einem Klick oder einigen Befehlen die gesamte Umgebung und alle Abhängigkeiten und alles, was das Projekt benötigt, reproduziert, können alle Backend-, Frontend-, Designer- und Entwickler-Projekte ausgeführt werden Knowlege noch ihre Host-Maschinentypen können das Projekt sehr einfach laufen lassen. Ich schlage auch vor, die Remote Server manuell oder mit Tools wie (Fabric / fabtools) Das Skript wird hauptsächlich os Abhängigkeiten, dann Projektabhängigkeiten installieren, klonen dann das Projekt Repo von Ihrem Virsion Control, und dazu müssen Sie den Remote-Servern (Testing, Staging und Produktion) Zugriff auf das Repository: ssh öffentliche Schlüssel hinzufügen von jedem Server zu den Schlüsseln in Ihrem Versionskontrollsystem (oder verwenden Sie Agentenweiterleitung mit fabric )
  • Remote-Server:

    • Sie benötigen mindestens einen Produktionsserver, der Ihr Projekt für die Endbenutzer zugänglich macht
    • Es wird empfohlen, dass Sie auch einen Test- und Staging-Server haben (ich nehme an, dass Sie den Zweck jedes einzelnen kennen)
  • Bereitstellungsablauf: Local-Repo-Remote-Server, wie funktioniert es?

    1. Geben Sie den Remote-Servern (Testen, Staging und Produktion) Zugriff auf das Repository: Fügen Sie den Schlüsseln Ihres Versionskontrollsystems (oder der Weiterleitung des Benutzeragenten mit fabric )
    2. ssh öffentliche Schlüssel jedes Servers hinzu
    3. Der Entwickler schreibt den Code auf seinen Rechner
    4. Schreibt schließlich Tests für seinen Code und führt sie lokal (und auf dem Testserver) aus
    5. Der Devloper gibt seinen Code an den Zweig weiter, den er für das Remote-Repository verwendet
    6. Bereitstellung:

      5.1 Wenn Sie einen Feature-Zweig zum Testen oder Staging bereitstellen möchten:

      • ssh Zugriff auf den Server und dann cd auf den Projektordner (manuell oder per Autogramm-Skript aus dem Repo geklont)
      • git checkout <the branch used>
      • git pull origin <the branch used>

      5.2 Wenn Sie in der Produktion bereitstellen möchten:

      • Erstellen Sie ein pull request , nachdem die Pull-Anforderung vom Manager validiert und mit master branch
      • zusammengeführt wurde
      • ssh Zugriff auf den Server und dann cd auf den Projektordner (manuell oder per Automatisierungsskript aus dem Repo geklont)
      • git checkout master # nicht benötigt coz sollte immer auf Master sein
      • %Code%
        • Ich schlage vor, ein Skript wie mit fabettools / fabtools zu schreiben oder Werkzeuge wie Jenkins zu verwenden, um die Deployment-Aufgabe zu automatisieren. Voilà! Bereitstellung abgeschlossen!

Thi ist ein bisschen vereinfachter Ansatz, es gibt noch eine Reihe anderer empfohlener und bester Prectice-Tools und Aufgaben.

    
Yahya Yahyaoui 18.04.2017, 13:51
quelle