snow app publish¶

Adds the version to the release channel and updates the release directive with the new version and patch.

Syntax¶

snow app publish
  --version <version>
  --patch <patch>
  --channel <channel>
  --directive <directive>
  --interactive / --no-interactive
  --force
  --create-version
  --from-stage
  --label <label>
  --package-entity-id <package_entity_id>
  --app-entity-id <app_entity_id>
  --project <project_definition>
  --env <env_overrides>
  --connection <connection>
  --host <host>
  --port <port>
  --account <account>
  --user <user>
  --password <password>
  --authenticator <authenticator>
  --private-key-file <private_key_file>
  --token-file-path <token_file_path>
  --database <database>
  --schema <schema>
  --role <role>
  --warehouse <warehouse>
  --temporary-connection
  --mfa-passcode <mfa_passcode>
  --enable-diag
  --diag-log-path <diag_log_path>
  --diag-allowlist-path <diag_allowlist_path>
  --format <format>
  --verbose
  --debug
  --silent
Copy

Arguments¶

None

Options¶

--version TEXT

The version to publish to the provided release channel and release directive. Version is required to exist unless --create-version flag is used.

--patch INTEGER

The patch number under the given version. This will be used when setting the release directive. Patch is required to exist unless --create-version flag is used.

--channel TEXT

The name of the release channel to publish to. If not provided, the default release channel is used. Default: DEFAULT.

--directive TEXT

The name of the release directive to update with the specified version and patch. If not provided, the default release directive is used. Default: DEFAULT.

--interactive / --no-interactive

When enabled, this option displays prompts even if the standard input and output are not terminal devices. Defaults to True in an interactive shell environment, and False otherwise.

--force

When enabled, this option causes the command to implicitly approve any prompts that arise. You should enable this option if interactive mode is not specified and if you want perform potentially destructive actions. Defaults to unset. Default: False.

--create-version

Create a new version or patch based on the provided --version and --patch values. Fallback to the manifest values if not provided. Default: False.

--from-stage

When enabled, the Snowflake CLI creates a version from the current application package stage without syncing to the stage first. Can only be used with --create-version flag. Default: False.

--label TEXT

A label for the version that is displayed to consumers. Can only be used with --create-version flag.

--package-entity-id TEXT

The ID of the package entity on which to operate when definition_version is 2 or higher.

--app-entity-id TEXT

The ID of the application entity on which to operate when definition_version is 2 or higher.

-p, --project TEXT

Path where Snowflake project resides. Defaults to current working directory.

--env TEXT

String in format of key=value. Overrides variables from env section used for templates. Default: [].

--connection, -c, --environment TEXT

Name of the connection, as defined in your config.toml file. Default: default.

--host TEXT

Host address for the connection. Overrides the value specified for the connection.

--port INTEGER

Port for the connection. Overrides the value specified for the connection.

--account, --accountname TEXT

Name assigned to your Snowflake account. Overrides the value specified for the connection.

--user, --username TEXT

Username to connect to Snowflake. Overrides the value specified for the connection.

--password TEXT

Snowflake password. Overrides the value specified for the connection.

--authenticator TEXT

Snowflake authenticator. Overrides the value specified for the connection.

--private-key-file, --private-key-path TEXT

Snowflake private key file path. Overrides the value specified for the connection.

--token-file-path TEXT

Path to file with an OAuth token that should be used when connecting to Snowflake.

--database, --dbname TEXT

Database to use. Overrides the value specified for the connection.

--schema, --schemaname TEXT

Database schema to use. Overrides the value specified for the connection.

--role, --rolename TEXT

Role to use. Overrides the value specified for the connection.

--warehouse TEXT

Warehouse to use. Overrides the value specified for the connection.

--temporary-connection, -x

Uses connection defined with command line parameters, instead of one defined in config. Default: False.

--mfa-passcode TEXT

Token to use for multi-factor authentication (MFA).

--enable-diag

Run Python connector diagnostic test. Default: False.

--diag-log-path TEXT

Diagnostic report path. Default: <temporary_directory>.

--diag-allowlist-path TEXT

Diagnostic report path to optional allowlist.

--format [TABLE|JSON]

Specifies the output format. Default: TABLE.

--verbose, -v

Displays log entries for log levels info and higher. Default: False.

--debug

Displays log entries for log levels debug and higher; debug logs contain additional information. Default: False.

--silent

Turns off intermediate output to console. Default: False.

--help

Displays the help text for this command.

Usage notes¶

The snow app publish command lets you add Snowflake Native App versions to a release channel and then sets the selected release directive to use the provided version and patch.

For more information on release channels and release directives, see Publishing a Snowflake Native App to customers.

Note

The release channels feature might not be available in all regions. Please contact Snowflake Support for more information.

If the release channel feature is not available, you can ignore the --channel parameter of this command.

This command adds the specified version to the release channel. If the release channel has reached its maximum number of versions, the oldest version not referenced by any release directive is removed from the release channel. After the version is added to the release channel, the release directive within the release channel is updated to use the provided version and patch.

If release channels are not enabled for the application package, only the release directive is updated to use the provided version and patch. When a release channel is not provided, or when using the default release channel, you can use the same commands whether release channels are enabled or not.

This command assumes that the version and patch already exist in the application package. If the version and patch do not exist, the command fails.

To create a new version or patch when using this command, use the --create-version option. By using this option, you can use options like --from-stage or --label. For more information, also see the snow app version create command.

The rules for creating a new version are the same rules as for the snow app version create command. In other words, Snowflake CLI uses the same fallback logic to the manifest file if the version field is missing.

Examples¶

  • Publish version v1 and patch 2 to the default release directive of the default release channel or to the default release directive in the package. In this example, release channels are not enabled:

    snow app publish --version v1 --patch 2
    
    Copy
  • Publish version v1 and patch 2 to the customers_group_1 release directive of the ALPHA release channel:

    snow app publish --version v1 --patch 2 --channel ALPHA --directive customers_group_1
    
    Copy
  • Publish version v1 and patch 2 to the default release directive of the QA release channel:

    snow app publish --version v1 --patch 2 --channel QA
    
    Copy
  • Create a new version and publish it to the custom early_adopters release directive of the default release channel:

    snow app publish --version v2 --create-version --directive early_adopters
    
    Copy
  • Add a patch to an existing version and publish it to the default release directive of the default release channel. You must use --create-version and either provide the patch number or omit it to use the next available patch number:

    snow app publish --version v2 --create-version
    
    Copy
  • Create a new patch from the content of the stage without syncing files to the stage first, and publish it to the default release directive of the default release channel:

    snow app publish --version v2 --patch 11 --create-version --from-stage
    
    Copy