Automatisierungswerkzeug für die Versionskontrolle

Hallo allerseits!

Es war schon immer interessant, was Produktversionen sind und wie man sie verwaltet. Wie automatisiere ich die Versionskontrolle der Entwicklung? Ich frage nach Katze.



Ich heiße Roman. Ich bin Entwickler bei einer sehr interessanten Firma Softeq, bei der jeder eine Inspiration ist.

Bei der Entwicklung verschiedener Tools habe ich darüber nachgedacht, ob alle Entwickler wissen, was die Version ist, was sie bedeutet und wie sie während der Entwicklung verwaltet wird. Schauen wir uns also an, was Versionierung ist.

Versionierung


Versionierung - Entwicklung und Verwaltung mehrerer Produktversionen, die dieselbe gemeinsame Funktionalität aufweisen, jedoch verbessert, modernisiert oder individualisiert sind.
Kurz gesagt, die Version spricht von einer Produktänderung. Wie spricht die Version über Produktänderungen?
Nennen wir das Zeichenbestellsystem zur Bezeichnung einer Produktversion ein Versionsschema. Es wurden verschiedene Versionsschemata erstellt, um Versionen verschiedener Software zu verfolgen.

Bild

Semantische Versionierung


Es gibt viele Versionsschemata, aber wir sind jeden Tag mit semantischer Versionierung konfrontiert. Für die semantische Versionierung ist es charakteristisch, dass Versionsnummern und deren Änderung die Bedeutung des Inhalts des Quellcodes und die von einer Version zur anderen vorgenommenen Änderungen wiedergeben.

Betrachten wir, wie die Nummer der semantischen Version gebildet wird.



Stellen wir uns vor, wir haben ein Projekt in der Entwicklung. Das Hauptziel des Projekts ist es, den Bau der Bibliothek zu verwalten. Mit dem Projekt können Sie Materialien für den Bau eines Gebäudes bestellen und die Phasen des Baus einer Bibliothek steuern. Derzeit wurde die Anwendungsarchitektur entworfen, die Implementierung grundlegender Aufgaben wurde durchgeführt. Beim Testen der Funktionalität zum Bestellen von Materialien zum Erstellen eines Bibliotheksgebäudes wird ein Fehler festgestellt, ein Fehler . Eine Fehlerbehebung wird durchgeführt und die Patch- Version des Projekts wird aktualisiert .



Der Kunde hatte eine Vorstellung von der Notwendigkeit, eine Analyse der Marketinginformationen im Projekt durchzuführen. Entwickler entwarfen geschickt und schnell Datenanalysedienste, integrierte Dienste mit aktueller Architektur. Es wurde eine neue Projektfunktionalität hinzugefügt, die die Abwärtskompatibilität nicht verletzt. Kleinere Version des Projekts ist gestiegen.



Das Projekt wurde erfolgreich umgesetzt. Nach einiger Zeit hatte der Kunde die Idee, diese Technologie für die Geschäftsautomatisierung zu entwickeln. Zu den bevorstehenden Plänen gehörten völlig neue Dienstleistungen: die Bildung eines Teams von Bauherren, ein internes soziales Netzwerk, ein interner Dokumentenaustausch und vieles mehr. Die Entwickler zeigten hohe Kompetenz und nach einer Weile wurde die Projektarchitektur entwickelt, um sowohl neue als auch alte Probleme zu lösen. Die neue Architektur des Projekts hat rückwärts inkompatible Änderungen vorgenommen. Die Hauptversion des Projekts ist gestiegen.



Das ganze Bild sieht so aus, aber Sie begegnen ihm selten.










Wir präsentieren also die Produktversionen. Aber wie geht man damit um?
Schauen wir uns ein Tool zur Automatisierung der Versionskontrolle an.

Versionierungen


NPM: https://www.npmjs.com/package/versionings
GitHub: https://github.com/morozow/versionings

Die Versionierung erfolgt über die Befehlszeile:

versionings --semver=[<semantic-version> | patch | prepatch | minor | preminor | premajor | prerelease | major] --branch=[<version-branch-name> | any-hyphen-case-less-100-characters-string] [--push] 

Die aktuelle Version des Produkts wird sowohl in der Datei ./package.json des Projekts als auch in Git-Tags und im Upgrade-Zweig gespeichert. Die Automatisierung kann in verschiedene Tools von Drittanbietern integriert werden. Die Versionskontrolle erfolgt über den CLI-Befehl.

Schauen wir uns ein Beispiel für die Aktualisierung eines Produkts an.

Aktionen


Ein Entwurf der aktuellen Version 2.5.3 wird entwickelt. In der Branche crm-user-service wird derzeit ein neuer Projektdienst entwickelt. Die Entwicklung des Dienstes wurde abgeschlossen, alle Änderungen wurden festgeschrieben und es wurde beschlossen, die Nebenversion zu erhöhen:

 versionings --semver=minor --branch=user-service --push 

Ergebnis


  1. Neuer Zweig: version / minor / v 2.6.0 - Benutzerdienst
  2. Versionsänderung in ./package.json : 2.5.3 -> 2.6.0
  3. Übernehmen Sie die neue Produktversion im Zweig version / minor / v 2.6.0 - user-service
  4. Schieben Sie einen neuen Zweig mit der Implementierung des Dienstes und einer erweiterten Version des Produkts.
  5. Erstellen einer Pull-Anforderung für den Zweig version / minor / v 2.6.0 - Benutzerdienst , der die Dienstimplementierung und die erweiterte Version des Produkts enthält

Bemerkungen


  • Automatisierungstool für Unix-Umgebungen
  • Ein Beispielprojekt zum Erstellen einer Bibliothek ist abstrakt, um einen allgemeinen Überblick über die Versionierung zu erhalten.

Das ist alles :)

Alles eine produktive Stimmung und ein toller Tag!

Source: https://habr.com/ru/post/de433994/


All Articles