2016-08-09 77 views
0

Ich habe eine Deployment-Anwendung für meine PHP-Anwendungen erstellt, tatsächlich ist dies eine einfache PHP-Seite, die 3 Umgebungen (dev, rc, prod) verwaltet.
Diese Seite enthält die Informationen zum letzten Commit und zu den einzelnen Umgebungen, sodass der Entwickler die Version einer Umgebung mithilfe von Tags ändern kann.
Ich sah mehrere Anwendungen (z. B. GitHub, Packagist ...) mit Tags für Versionen, aber ich bekomme einige Probleme damit.
Zuvor war ich mit SVN und es war sehr einfach und schnell, es zu tun, also werde ich von Git frustriert und vielleicht könnten Sie mir helfen.
Ich benutze Gitlab und Github für mehrere Projekte.

Zunächst vorsichtig sein, dass nur ein git remote Anfrage sehr langsam sein kann (1 bis 6 Sekunden)
Probleme beim Erstellen einer einfachen Deployment-Anwendung

Informieren Sie sich über letzte
verpflichten, diese Informationen zu erhalten, ich habe die Dev-Umgebung holen dann mache ich git --no-pager show --name-status --format="__TOKEN__%n%H%n%T%n%P%n%d%n%an%n%ae%n%aD%n%cn%n%ce%n%cD"
Ich benutze ein zufälliges __TOKEN__, um das Ergebnis zu analysieren, git kann mehr Informationen hinzufügen, aber es ist mir egal.
So könnte das Ergebnis sein:

___DATA-57a988c31bbf2___ 
b4041b95c0221fe211ea74110a421842f625f2c8 
2287ccb797fc886055a5f4afc56aa90d7dcf4a4e 
d1c618e0f50783efff209ba6c0752d55f14bd241 
(HEAD, v0.1.7.2, origin/master, origin/HEAD, master) 
Loenix 
[email protected] 
Mon, 8 Aug 2016 15:09:44 +0200 
Loenix 
[email protected] 
Mon, 8 Aug 2016 15:09:44 +0200 

Dies funktioniert, aber ich habe es jedes Mal zu holen.

Ich bekomme Informationen über Umgebungen auf die gleiche Weise.

Liste Versionen (Tags)
Nun, ich brauche alle Version mit Namen und Datum aufzulisten, so ich tue git for-each-ref --sort=taggerdate --format "%(tag)|%(taggerdate)" refs/tags | sort -V
ich als Ergebnisse bin immer:

v0.1.5|Mon Jun 6 22:14:18 2016 +0200 
v0.1.6|Mon Jun 6 22:47:02 2016 +0200 
v0.1.7.1|Mon Aug 8 13:55:59 2016 +0200 
v0.1.7.2|Mon Aug 8 15:10:02 2016 +0200 
v0.1.7|Mon Aug 8 13:36:12 2016 +0200 

Dies ist nicht das Sortieren Gut.

ändern Version einer Umgebung
finde ich zur Zeit zwei Lösungen:

  1. git checkout v0.1.7.2 Dieses Update aktuelle Version neue. Das Problem ist, wenn ich Composer verwende, Composer.lock wird lokal geändert und git gibt einen Fehler zurück.
  2. git reset --hard v0.1.7.2 Dies ersetzt alle Dinge in Ordner ...

Ich konnte die composer.lock Fehler beheben, indem sie es zu ignorieren.

Ich bekomme einige Probleme, um Versionen zu manipulieren, weil eine Umgebung auf Master oder auf einem Tag verzweigt werden könnte und ich nicht in der Lage bin, das Tag (die Version) einer Umgebung effizient zu identifizieren.

I-Tags am Cachen aber durch diese Weise nimmt meine Seite 5-10 Sekunden zu laden ...

Können Sie mir helfen, die Probleme zu beheben? Haben Sie einige Ratschläge? Denkst du ich sollte es anders machen? Ich könnte auch eine einfache vorhandene Deployment-Anwendung verwenden, aber ich habe keine gute gefunden.

PS: Alle Befehle werden mit der PHP-Funktion system() auf einem debian/ubuntu OS ausgeführt.

+0

warum System, es gibt nur die letzte Zeile der Befehlsausgabe, haben Sie versucht, exec() anfällig sein? –

+0

@ M.I. Es zeigt die Ausgabe an, das funktioniert besser als exec() und das verursacht kein Problem. – Loenix

Antwort

0

Loenix, ich denke in Ihrem Fall ist der beste Weg, eine dedizierte Software, z. buddy.works. Sie können für jeden Server eine eigene Deployment-Umgebung erstellen (sie nennen es Pipelines in Buddy) + die App selbst ist leichtgewichtig und sehr einfach zu bedienen (Sie klicken einfach auf Dinge hin).

Manuelle Bereitstellung mit system() ist hart und kann zu Fehlern