为应用程序创建版本和补丁¶
本主题介绍了如何为应用程序包添加版本和补丁。
有关版本和补丁以及如何使用它们来更新和升级应用程序的一般信息,请参阅 关于应用程序版本和补丁。
将版本或补丁添加到应用程序包¶
应用程序的版本和补丁在应用程序包中定义。
将版本或补丁添加到应用程序包后,提供商可通过基于版本或补丁创建应用程序对象在本地测试这些更改。
有关更多信息,请参阅 从版本或补丁级别创建应用程序对象。
添加或移除版本和补丁所需的权限¶
要为应用程序包指定版本或补丁,必须具有向您的角色授予的对应用程序包的以下权限之一:
OWNERSHIP
MANAGE VERSIONS
例如,要将对应用程序包的 MANAGE VERSION 权限授予 release_mgr
角色,请使用以下示例中所示的 GRANT <privileges> 命令:
GRANT MANAGE VERSIONS ON APPLICATION PACKAGE hello_snowflake_package
TO ROLE release_mgr;
将版本添加到应用程序包¶
要使用 SQL 将版本添加到应用程序包,请运行 ALTER APPLICATION PACKAGE 命令:
ALTER APPLICATION PACKAGE MyAppPackage
ADD VERSION v1
USING '@dev_stage/v1'
LABEL = 'MyApp Version 1.0';
在此示例中,v1
是版本的标识符。此标识符在使用者安装应用程序时不可见。使用者可以看到 LABEL 子句中定义的版本信息。
小心
一个应用程序只能同时存在两个版本。有关更多信息,请参阅 关于应用程序版本和补丁。
您可以在 manifest.yml
文件中定义版本名称和标签,也可以直接使用 ALTER APPLICATION PACKAGE 命令指定版本名称和标签。如果在 manifest.yml
文件中定义它们以及使用 SQL 命令定义它们,则 SQL 命令中指定的值优先于 manifest.yml
文件中指定的值。
将补丁添加到应用程序包¶
除了为应用程序创建版本外,您还可以为特定版本创建补丁。与版本一样,应用程序补丁也有自己的应用程序文件。
要为应用程序包创建新补丁,请使用 ALTER APPLICATION PACKAGE ...VERSION 命令的 ADD PATCH FOR VERSION 子句,如以下示例所示:
ALTER APPLICATION PACKAGE MyAppPackage
ADD PATCH FOR VERSION V1_0
USING '@dev_stage/v1_0_p1;
在此示例中,未向 ADD PATCH FOR VERSION V1_0 子句提供补丁号。在这种情况下,Snowflake 会自动将补丁号递增 1。
要为具有自定义补丁号的应用程序创建新补丁,请向 ALTER APPLICATION PACKAGE ...VERSION 命令的 ADD PATCH FOR VERSION 子句提供补丁号,如以下示例所示:
ALTER APPLICATION PACKAGE MyAppPackage
ADD PATCH 3
FOR VERSION V1_0
USING '@dev_stage/v1_p1;
查看应用程序包中的版本和补丁¶
作为提供商,您可以通过对应用程序包运行 SHOW VERSIONS 命令来查看为应用程序定义的版本和补丁。
以下命令显示已为名为 hello_snowflake_package
的应用程序包定义的版本和补丁:
SHOW VERSIONS IN APPLICATION PACKAGE hello_snowflake_package;
从应用程序包中移除版本¶
要从应用程序包中移除版本,必须验证当前没有 发布指令 指向要移除的版本。
有关查看发布指令的信息,请参阅 查看应用程序包的发布指令。
要从应用程序包中移除版本,请使用 ALTER APPLICATION PACKAGE 命令的 DROP VERSION 子句,如以下示例所示:
ALTER APPLICATION PACKAGE hello_snowflake_package
DROP VERSION v1_0;
运行此命令后,在删除应用程序的所有已安装实例之前,不会删除版本。要验证 drop 命令的状态,请使用 SHOW VERSIONS,如以下示例所示:
SHOW VERSIONS IN APPLICATION PACKAGE hello_snowflake_package;
dropped_on
列列出了启动 drop 命令时的时间戳。
备注
删除的版本仅在状态为 DROPPED
时才会显示在此命令的输出中。删除应用程序的所有已安装实例后,删除的版本将不再显示。
删除某个版本后,使用者无法再安装该版本应用程序的新实例。
根据向使用者发布应用程序的方式,删除版本可能需要不同的时间:
如果应用程序包尚未发布给使用者,则会立即删除该版本。
如果应用程序包已在单个区域内作为公共或专用列表发布,则会立即删除该版本。
如果应用程序包作为与应用程序包在同一区域内共享的列表的数据产品发布,则该版本将在几个小时内删除。
如果使用 Cross-Cloud Auto-Fulfillment 将应用程序包作为列表的数据产品发布,则可能需要更长的时间才能在所有区域中删除该版本。