Ich arbeite in einer bestimmten Woche an mehreren appengine Projekten. d.h. mehrere Clients annehmen. Früher konnte ich application
in app.yaml
setzen. Also, wann immer ich appcfg.py update....
getan habe, würde es die Bereitstellung für das richtige Projekt sicherstellen.
Bei der Bereitstellung gibt die Anwendungsvariable einen Fehler mit gcloud deploy
aus. Ich musste es benutzen
%Code%. Was früher eine Verzeichnisebene für ein Projekt war, geht nun in unsere Build Tooling. Und dieses einfache Detail zu verpassen, kann einen Projektcode an den falschen Kunden weitergeben.
wenn ich gcloud app deploy --project [YOUR_PROJECT_ID]
und dann irgendwie gcloud config set project proj1
in proj2 gemacht hätte, würde es zu proj1 deployen. Produktionsbereitstellungen werden nach einer detaillierten Verifizierung der Build-Tools durchgeführt und sind daher weniger problematisch, da wir weiterhin das Flag gcloud app deploy
verwenden.
Aber es ist schwer, ähnliche Dinge in der Entwicklungsumgebung zu tun. --project
hat kein dev_appserver.py
-Flag.
Beim Starten von --project
muss ich dev_appserver.py
ausführen, bevor ich den Server starte. Dies ist wichtig, wenn ich Dinge wie PubSub oder GCS verwende (in Dev-Themen oder Dev-Buckets).
Leider kann das Verpassen einer einfachen Konfiguration wie das Setzen einer Projekt-ID in einer Entwicklungsumgebung dazu führen, dass blobs / messages / etc in den falschen dev gcs bucket oder das falsche dev pubsub-Thema hochgeladen werden (keine Emulatoren). Und das ist schon einige Male passiert, besonders beim Start neuer Projekte.
Ich finde die obigen Lösungen als Hack-Workarounds. Gibt es eine gute Möglichkeit, sicherzustellen, dass wir bei der Arbeit in einem bestimmten Verzeichnis nicht in einem falschen Projekt arbeiten oder entwickeln?
Das sind genau die Gründe, warum ich gcloud
nicht mag. Command Line Argument obligatorisch machen und Konfigurationsdateien ablegen, viel zu fehleranfällig für meinen Geschmack.
Bisher kann ich immer noch das GAE-SDK anstelle des Google Cloud SDK verwenden (siehe Was ist die Beziehung zwischen Google App Engine SDK und Cloud SDK? ), die eine Option sein könnte - im Grunde tun Sachen" die alte Weg". Bitte beachten Sie, dass es nicht mehr die empfohlene Methode ist.
Sie finden die immer noch kompatiblen GAE SDKs .
Wenn die oben genannten Optionen nicht mehr verfügbar sind und ich gezwungen bin, zum Cloud SDK zu wechseln, ist mein Plan, in jedem App-Verzeichnis versionskontrollierte Cheat-Sheet-Textdateien zu haben, die genau die zum Ausführen benötigten cmds enthalten der devserver, deploy, etc für dieses spezielle Projekt, das ich einfach in das Terminal kopieren kann, ohne Angst haben zu müssen, Fehler zu machen. Sie legen diese sorgfältig einmal fest und kopieren sie dann einfach. Als Bonus können Sie verschiedene Zweigversionen für verschiedene Umgebungen (z. B. Staging / Produktion) verwenden.
Tatsächlich verwende ich diesen Ansatz sogar für das GAE-SDK - um eine versehentliche Bereitstellung der Konfigurationsdateien auf App-Ebene in der falschen GAE-App zu verhindern (solche Bereitstellungen müssen cmdline-Argumente verwenden, um die App in Multi-Service-Apps anzugeben).
Oder machen Sie dasselbe, aber mit Umgebungskonfigurationsdateien und Wrapper-Skripten anstelle von Cheat-Sheet-Dateien, wenn Sie das bevorzugen.
TL; DR - Wird nicht basierend auf dem aktuellen Arbeitsverzeichnis unterstützt, aber es gibt Problemumgehungen.
gcloud
können Sie nicht direkt eine Konfiguration pro Arbeitsverzeichnis einrichten. Stattdessen könnten Sie eine dieser 3 Optionen verwenden, um etwas Ähnliches zu erreichen:
Geben Sie --project
, --region
, --zone
oder die gewünschte Konfiguration pro Befehl an. Das ist schmerzhaft, aber erledigt die Arbeit.
Geben Sie ein anderes gcloud-Konfigurationsverzeichnis pro Befehl an ( gcloud
verwendet standardmäßig ~/.config/gcloud
für *nix
):
Erstellen Sie mehrere Konfigurationen und wechseln Sie bei Bedarf zwischen ihnen.
%Vor%Da alle oben genannten Optionen in der Befehlszeile angepasst werden können, erleichtern auch Aliase und / oder Funktionen in Ihrer bevorzugten Shell die Arbeit.
Zum Beispiel kann in bash Option 2 wie folgt implementiert werden:
%Vor%Tags und Links python google-app-engine