Ich wollte lediglich eine Reihe von Plugins und Beispielen für Deployit erstellen und dabei die verschiedenen verfügbaren Techniken anwenden. Während ich an den Beispielen arbeitete, war ich frustriert, weil ich die Überreste früherer Versuche aufräumen musste. Also folgte ich den Fußstapfen größerer Männer als meiner Wenigkeit (vor allem Professor Knuth, der TeX erfand, damit er eine Reihe von Büchern über Informatik schreiben konnte) und schrieb zunächst ein Skript, um Müll im Deployit-Repository zu erzeugen und ihn dann in einem Rutsch loszuwerden.
Ich habe meinen Code auf Github veröffentlicht (git clone git://github.com/jvermeir/DeployitBlogs.git).
Um die Beispiele auszuprobieren, benötigen Sie Deployit 3.8.4 (die Version, die ich verwendet habe, aber ich bin mir ziemlich sicher, dass es auch mit anderen Versionen funktioniert). Ich habe den Server und den Cli in einem Verzeichnis installiert, auf das die Umgebungsvariable $DEPLOYIT_HOME verweist. Ich verwende in meinen Beispielen Variablen und Skripte im *nix-Stil. Wenn Sie darauf bestehen, Microsoft zu verwenden, können Sie jederzeit Cygwin herunterladen oder die Beispiele selbst abändern. Nach dem Auschecken der Quellen und der Installation von Deployit sollte $DEPLOYIT_HOME die folgenden Ordner enthalten:
deployit-3.8.4-server
deployit-3.8.4-cli
DeployitBlogs
DeployitBlogs enthält ein Verzeichnis namens tools, das im Moment nicht mehr als ein paar Skripte enthält, vor allem drei Skripte namens utils.py, cleanup.cli und deploy.cli. In src/test finden Sie eine dar-Datei, die ich verwende, um meine Skripte und Plugins auszuprobieren (deps.dar wurde aus einem anderen Beispiel erstellt, das ich später noch erläutern werde; im Moment ist es unwichtig; es kopiert lediglich einige Dateien und gibt eine Meldung auf der Konsole aus).
Utils.py ist nicht wirklich ein Skript, sondern ein Plugin. Es sollte eigentlich in $DEPLOYIT_HOME/cli/ext abgelegt werden, aber das kann sehr schnell sehr mühsam werden, wenn Sie durch viele Versionen gehen. Deshalb habe ich das Skript im Verzeichnis tools belassen und einen symbolischen Link darauf erstellt, damit der Cli neue Versionen beim Neustart aufnimmt. Erstellen Sie einen Link in $DEPLOYIT_HOME/cli/ext:
cd $DEPLOYIT_HOME/deployit-3.8.4-cli/ext
ln -s $DEPLOYIT_HOME/DeployitBlogs/tools/utils.py utils.py
Eine weitere Einrichtung ist notwendig: Erstellen Sie zwei Testumgebungen, die für die Skripte in den Beispielen benötigt werden, die ich später besprechen möchte. Öffnen Sie die Deployit Client-Oberfläche und erstellen Sie zwei Umgebungen mit den Namen 'localenv' und 'AnotherLocalEnv'. Sie sollten jeweils einen overthere.SshHost namens 'local' und 'AnotherLocalHost' enthalten. Ich habe beide Hosts mit Standardeinstellungen und dem Benutzernamen 'deployit' definiert, aber der Benutzername spielt für die Beispiele (noch) keine Rolle. Er sollte jedoch vorhanden sein, so dass sich Deployit in meinem Fall einfach mit localhost als Benutzer 'deployit' verbindet, um die Skripte auszuführen.$DEPLOYIT_HOME/deployit-3.8.4-cli/bin/cli.sh -username admin -password admin -f $DEPLOYIT_HOME/DeployitBlogs/tools/deploy.cli -- $DEPLOYIT_HOME/DeployitBlogs/tools/src/test/deps.dar localenv
Der obige Befehl startet den Client, verbindet sich mit den Standardanmeldeinformationen, startet das im Parameter -f genannte Skript und übergibt die beiden Parameter nach dem Doppelstrich an das Skript.
Um noch mehr Tipparbeit zu vermeiden, habe ich ein Shell-Skript d.sh erstellt, das nicht mehr tut, als die obige Befehlszeile auszuführen. Es nimmt den Umgebungsnamen als Parameter wie folgt entgegen:
d.sh localenv
Um das Bereinigungsskript aufzurufen, verwenden Sie:
c.sh deps
Nachdem wir diese Details geklärt haben, können wir das Skript utils.py besprechen.
utils.py wird vom cli gelesen, wenn er gestartet wird. Jede Methode des Skripts ist über die cli-Befehlszeile verfügbar, aber es gibt zwei Haupteinstiegspunkte:
def deployApp(fileName, environmentName):
def deleteApp(appName):
Dies sind die Methoden, die von deploy.cli bzw. cleanup.cli aufgerufen werden.
deployApp ist nichts anderes als eine einfache Bereitstellung einer Anwendung aus einer dar-Datei, wie in der cli-Anleitung (climanual.html) beschrieben, die Sie im Verzeichnis server/doc/html finden (öffnen Sie die Datei und suchen Sie nach 'Performing deployments').
Bevor deployApp eine Anwendung aus einem DAR-Archiv bereitstellt, ruft es deleteApp auf, um alle Spuren von zuvor importierten oder installierten Versionen aus jeder Umgebung zu löschen.
DeleteApp ruft undeployApps (siehe Abbildung unten) auf, um alle Versionen der App zu finden und sie zu löschen, damit sie anschließend durch den Aufruf von deleteVersions gelöscht werden können.
deleteVersions funktioniert wie undeployApps: Holen Sie sich eine Liste der zu löschenden Objekte, führen Sie eine Schleife durch und löschen Sie jede Version mit repository.delete().
[caption id="attachment_10860" align="alignnone" width="300"]
Die wichtigsten Methoden von utils.py[/caption]
Wenn Sie an den Details interessiert sind, können Sie das Repo klonen unter
git clone git://github.com/jvermeir/DeployitBlogs.git
cd DeployitBlogs/
git checkout 94ff4af
Der Code für diesen Blog befindet sich im Verzeichnis 'tools'.
Verfasst von

Jan Vermeir
Developing software and infrastructure in teams, doing whatever it takes to get stable, safe and efficient systems in production.
Contact



