Versionierung, Patches und Upgrades für eine Anwendung

Unter diesem Thema wird beschrieben, wie Sie Versionen und Patches zu einer Anwendung hinzufügen, die mit dem Native Apps Framework erstellt wurde. Unter diesem Thema wird außerdem beschrieben, wie Sie ein versioniertes Schema verwenden, um eine nahtlose Aktualisierung der Anwendungsdateien und des Setup-Skripts Ihrer Anwendung sicherzustellen.

Allgemeine Informationen zu Versionen, Patches und Upgrades

Das Native Apps Framework stellt Funktionalität zur Verfügung, mit der Sie Ihre Anwendung aktualisieren oder Probleme beheben können. Außerdem bietet es eine Möglichkeit, Anwendungen nach ihrer Installation in einem Verbraucherkonto nahtlos zu aktualisieren.

Allgemeine Informationen zu Versionen und Patches

Im Allgemeinen verwenden Sie neue Versionen, um neue Features oder Verhaltensänderungen für eine Anwendung einzuführen. Der Upgrade- (und Rollback-)Prozess von einer Hauptversion zu einer anderen Hauptversion stellt sicher, dass kein Code einer früheren Version mehr ausgeführt werden kann. Das bedeutet, dass das Setup-Skript nur mit der unmittelbar vorhergehenden Hauptversion kompatibel sein muss.

Patches gelten als Vollversionen der Anwendung, d. h. sie werden durch ein Setup-Skript genau so definiert wie eine Hauptversion. Im Gegensatz zu Vollversions-Upgrades gibt es jedoch keine Beschränkungen hinsichtlich der Reihenfolge, in der der Anbieter diese installieren kann, und auch nicht hinsichtlich der Anzahl der Patches, deren Code gleichzeitig ausgeführt werden kann.

Zu einer gegebenen Version können mehrere Patches hinzugefügt werden. Anders als bei Versionen gibt es keine Einschränkungen bei der Installation eines Patches auf der aktuell installierten Version. Das bedeutet, dass der Code von mehreren verschiedenen Patches gleichzeitig ausgeführt werden kann, wenn diese in schneller Folge installiert werden. Das bedeutet auch, dass eine neue Version mit allen möglichen in Ausführung befindlichen Patches der Vorgängerversion kompatibel sein muss.

Erstellen von Versionen und Patches

Die Versionsinformationen für eine Anwendung werden im Anwendungspaket angegeben.

Hinzufügen einer Version zu einem Anwendungspaket

Das folgende Beispiel zeigt, wie Sie den Befehl ALTER APPLICATION PACKAGE verwenden, um einem Anwendungspaket eine Version hinzuzufügen.

ALTER APPLICATION PACKAGE MyAppPackage
  ADD VERSION v1_0
  USING '@dev_stage/v1_0'
  LABEL = 'MyApp Version 1.0';
Copy

In diesem Beispiel ist v1_0 ein Bezeichner für die Version, die für den Verbraucher bei der Installation der Anwendung nicht sichtbar ist. Der Verbraucher sieht die Versionsinformationen, die in der Klausel LABEL-Klausel definiert sind.

Es können nur zwei Versionen einer Anwendung gleichzeitig existieren. Wenn Sie zum Beispiel v1_0 und v1_1 in einer Anwendung definiert haben, müssen Sie v1_0 löschen, um v1_2 erstellen zu können. Sie können jedoch mehrere Patches für eine einzige Version haben.

Sie können den Versionsnamen und die Bezeichnung in der Datei manifest.yml definieren, oder Sie geben diese Informationen direkt mit dem Befehl ALTER APPLICATION PACKAGE an. Wenn Sie die Informationen sowohl in der Datei manifest.yml als auch mit dem SQL-Befehl definieren, haben die im SQL-Befehl angegebenen Werte Vorrang vor den in der manifest.yml-Datei angegebenen Werten.

Hinzufügen eines Patches zu einem Anwendungspaket

Neben dem Erstellen von Versionen für eine App können Sie auch Patches für eine bestimmte Version erstellen. Wie die Versionen haben auch die App-Patches ihre eigenen Anwendungsdateien.

Um einen neuen Patch für ein Anwendungspaket zu erstellen, verwenden Sie im Befehl ALTER APPLICATION PACKAGE die Klausel ADD PATCH FOR VERSION, wie im folgenden Beispiel gezeigt:

ALTER APPLICATION PACKAGE MyAppPackage ADD PATCH
 FOR VERSION V1_0
 USING '@dev_stage/v1_0_p1;
Copy

Wenn Sie die erste Version zu einem Anwendungspaket hinzufügen, wird dieser Version die Patchnummer 0 zugewiesen. Wenn Sie weitere Patches hinzufügen, erhöht Snowflake die Patchnummer um 1.

Bemerkung

Sie können die Patchnummer nicht selbst festlegen. Snowflake verwaltet die Patchnummern intern.

Anzeigen der Versionen und Patches eines Anwendungspakets

Als Anbieter können Sie die für eine Anwendung definierten Versionen und Patches anzeigen, indem Sie den Befehl SHOW VERSIONS auf dem Anwendungspaket ausführen.

Mit dem folgenden Befehl werden die Versionen und Patches angezeigt, die für ein Anwendungspaket namens HelloSnowflakePackage definiert wurden:

SHOW VERSIONS IN APPLICATION PACKAGE HelloSnowflakePackage;
Copy

Entfernen einer Version aus einem Anwendungspaket

Um eine Version aus einem Anwendungspaket zu entfernen, verwenden Sie im Befehl ALTER APPLICATION PACKAGE die Klausel DROP VERSION, wie im folgenden Beispiel gezeigt:

ALTER APPLICATION PACKAGE HelloSnowflakePackage
  DROP VERSION v1_0;
Copy

Bemerkung

Das Löschen einer Version, die zu diesem Zeitpunkt noch von einer installierten Anwendung verwendet wird, kann dazu führen, dass diese Version so lange nicht verwendbar ist, bis die installierte Anwendung aktualisiert wird.

Dieser Befehl ist erst dann abgeschlossen, wenn alle Anwendungen auf eine neue Version aktualisiert wurden. Seien Sie vorsichtig, wenn Sie eine Version löschen, die aktuell von einem Verbraucherkonto verwendet wird.

Festlegen der Freigaberichtlinie für ein Anwendungspaket

Nachdem Sie eine Version zu einem Anwendungspaket hinzugefügt haben, können Sie eine Freigaberichtlinie für das Anwendungspaket angeben. Mit der Freigaberichtlinien wird festgelegt, welche Version der Anwendung einem Verbraucher zur Verfügung gestellt wird, wenn dieser die Anwendung installiert.

Allgemeine Informationen zu Freigaberichtlinien

Sie können für ein Anwendungspaket eine Standard-Freigaberichtlinie festlegen. Die Standard-Freigaberichtlinie gibt die Version an, die bei Installation einer Anwendung bei allen Verbrauchern angewendet wird. Wenn Sie beispielsweise von einer Anwendung eine Version V1 und eine Version V2 erstellt haben, können Sie durch Festlegen von V2 in der Standard-Freigaberichtlinie sicherstellen, dass ein Verbraucher bei der Installation der Anwendung die Version V2 installiert.

Sie können zu einem Anwendungspaket auch eine kundenspezifische Freigaberichtlinie hinzufügen. Mit kundenspezifischen Freigaberichtlinien können Sie festlegen, welche Version einer Anwendung von bestimmten Snowflake-Konten installiert wird.

Wenn Sie beispielsweise von einer Anwendung eine Version V2 und eine Version V3 erstellt haben, können Sie V2 als Standard-Release festlegen, und dann können Sie über eine kundenspezifische Freigaberichtlinie festlegen, dass bei bestimmten Konten V3 freigegeben wird. Ein typischer Anwendungsfall für kundenspezifische Freigaberichtlinien ist die Freigabe einer Anwendung für das Verbraucherkonto, das Sie zum Testen verwenden.

Bemerkung

Wenn Sie sowohl eine Standard- als auch eine kundenspezifische Freigaberichtlinie angeben, hat die kundenspezifische Freigaberichtlinie immer Vorrang. Im obigen Beispiel können Verbraucherkonten, die in der kundenspezifischen Freigaberichtlinie angegeben sind, nur Version V3 der Anwendung installieren.

Das Definieren einer Freigaberichtlinie für ein Anwendungspaket ist erforderlich, damit Sie Folgendes tun können:

  • Installieren einer Anwendung im Verbraucherkonto

  • Erstellen eines privaten Freigabeangebots für ein Anwendungspaket

Erforderliche Berechtigungen zum Festlegen der Freigaberichtlinie

Für das Angeben einer Freigaberichtlinie ist die Berechtigung MANAGE RELEASES oder die Eigentümerschaft an dem Anwendungspaket erforderlich.

GRANT MANAGE RELEASES ON APPLICATION PACKAGE HelloSnowflakePackage
  TO ROLE release_mgr;
Copy

Festlegen der Standard-Freigaberichtlinie für ein Anwendungspaket

Verwenden Sie zum Festlegen der Standard-Freigaberichtlinie den Befehl ALTER APPLICATION PACKAGE mit SET DEFAULT RELEASE DIRECTIVE, wie im folgenden Beispiel gezeigt:

ALTER APPLICATION PACKAGE HelloSnowflakePackage
  SET DEFAULT RELEASE DIRECTIVE
  VERSION = v1_0
  PATCH = 2;
Copy

Um die Standard-Freigaberichtlinie für ein Anwendungspaket zu aktualisieren, führen Sie den Befehl ALTER APPLICATION PACKAGE erneut mit SET DEFAULT RELEASE DIRECTIVE aus, wobei Sie neue Werte für VERSION und PATCH angeben.

Hinzufügen einer kundenspezifischen Freigaberichtlinie zu einem Anwendungspaket

Um eine kundenspezifische Freigaberichtlinie hinzuzufügen, verwenden Sie den Befehl ALTER APPLICATION PACKAGE mit SET RELEASE DIRECTIVE. Verwenden Sie die Klausel ACCOUNTS, um die Konten anzugeben, für die diese Freigaberichtlinie gelten soll. Beispiel:

ALTER APPLICATION PACKAGE HelloSnowflakePackage
  SET RELEASE DIRECTIVE HelloSnowflakePackage_Custom
  ACCOUNTS = (CONSUMER_ORG.CONSUMER_ACCOUNT)
  VERSION = v1_0
  PATCH = 0;
Copy

Nachdem Sie eine kundenspezifische Freigaberichtlinie zu einem Anwendungspaket hinzugefügt haben, können Sie für die Freigaberichtlinie Version und Patch aktualisieren, indem Sie ALTER APPLICATION PACKAGE mit MODIFY RELEASE DIRECTIVE ausführen und die neuen Werte für VERSION und PATCH angeben.

Sie können jedoch nicht die Konten ändern, die der Freigaberichtlinie zugeordnet sind. Um die Organisation und das Konto zu ändern, die einer Freigaberichtlinie zugeordnet sind, gehen Sie wie folgt vor:

  1. Entfernen Sie die Freigaberichtlinie aus dem Anwendungspaket, indem Sie den Befehl ALTER APPLICATION PACKAGE mit UNSET RELEASE DIRECTIVE ausführen.

  2. Fügen Sie die Freigaberichtlinie wieder zum Anwendungspaket hinzu, indem Sie den Befehl ALTER APPLICATION PACKAGE mit SET RELEASE DIRECTIVE ausführen und dabei mit der Klausel ACCOUNTS die Liste der Konten angeben.

Aktualisieren der kundenspezifischen Freigaberichtlinie eines Anwendungspakets

Um die Version oder den Patch für eine kundenspezifische Freigaberichtlinie zu aktualisieren, verwenden Sie den Befehl ALTER APPLICATION PACKAGE mit MODIFY RELEASE DIRECTIVE wie im folgenden Beispiel gezeigt:

ALTER APPLICATION PACKAGE HelloSnowflakePackage
  MODIFY RELEASE DIRECTIVE HelloSnowflakePackage_Custom
  VERSION = v1_0
  PATCH = 0;
Copy

Entfernen einer kundenspezifischen Freigaberichtlinie aus einem Anwendungspaket

Um eine kundenspezifische Freigaberichtlinie aus einem Anwendungspaket zu entfernen, verwenden Sie den Befehl ALTER APPLICATION PACKAGE mit UNSET RELEASE DIRECTIVE wie im folgenden Beispiel gezeigt:

ALTER APPLICATION PACKAGE HelloSnowflakePackage
  UNSET RELEASE DIRECTIVE HelloSnowflakePackage_Custom;
Copy

Freigeben von Versionen und Patches

Wenn Sie eine Anwendung aus einem Anwendungspaket im Entwicklungsmodus installieren, werden die Version und der Patch explizit angegeben. Anders ist dies jedoch bei einer normalen Installation einer Anwendung, wie z. B.:

CREATE APPLICATION HelloSnowflake
  FROM APPLICATION PACKAGE HelloSnowflakePackage
Copy

In diesem Fall bestimmt die Freigaberichtlinie die Version, die bei der Ausführung dieses Befehls installiert wird.