snow app deploy¶
Uploads your project source to Snowflake, builds it remotely, and creates or alters the Application Service. This is the primary command for shipping changes to a Snowflake App Runtime project. By default it runs three phases in order: upload, build, and deploy.
When the project has an app.yml, snow app deploy runs the Snowflake App
Runtime flow (upload, build, deploy). When snowflake.yml contains a Native
App entity, the command runs the Native App flow instead. Older App Runtime
projects that still use snowflake.yml are covered in
Migrate from snowflake.yml to app.yml.
Syntax¶
Arguments¶
None
Options¶
--upload-onlyRe-upload source files without rebuilding or redeploying. Only one of
--upload-only,--build-only, or--promote-onlycan be used at a time. Default: False.--build-onlyRe-trigger the remote build without re-uploading or redeploying. Only one of
--upload-only,--build-only, or--promote-onlycan be used at a time. Default: False.--promote-onlyCreate or alter the Application Service without re-uploading or rebuilding. Only one of
--upload-only,--build-only, or--promote-onlycan be used at a time. Default: False.--target TEXT(Snowflake App Runtime only) Name of the target (environment) declared in the
targetsblock ofapp.yml. If you omit--target, the CLI uses the top-leveldefault_target. Required whentargetsare declared anddefault_targetis unset.--connection, -c, --environment TEXTName of the connection, as defined in your
config.tomlfile. Default:default.--host TEXTHost address for the connection. Overrides the value specified for the connection.
--port INTEGERPort for the connection. Overrides the value specified for the connection.
--account, --accountname TEXTName assigned to your Snowflake account. Overrides the value specified for the connection.
--user, --username TEXTUsername to connect to Snowflake. Overrides the value specified for the connection.
--password TEXTSnowflake password. Overrides the value specified for the connection.
--authenticator TEXTSnowflake authenticator. Overrides the value specified for the connection.
--workload-identity-provider TEXTWorkload identity provider (AWS, AZURE, GCP, OIDC). Overrides the value specified for the connection.
--private-key-file, --private-key-path TEXTSnowflake private key file path. Overrides the value specified for the connection.
--token TEXTOAuth token to use when connecting to Snowflake.
--token-file-path TEXTPath to file with an OAuth token to use when connecting to Snowflake.
--database, --dbname TEXTDatabase to use. Overrides the value specified for the connection. This doesn’t change the Application Service destination in
app.yml.--schema, --schemaname TEXTDatabase schema to use. Overrides the value specified for the connection. This doesn’t change the Application Service destination in
app.yml.--role, --rolename TEXTRole to use. Overrides the value specified for the connection.
--warehouse TEXTWarehouse to use. Overrides the value specified for the connection. This doesn’t change
query_warehouseinapp.yml.--temporary-connection, -xUses a connection defined with command-line parameters, instead of one defined in config. Default: False.
--mfa-passcode TEXTToken to use for multi-factor authentication (MFA).
--enable-diagWhether to generate a connection diagnostic report. Default: False.
--diag-log-path TEXTPath for the generated report. Defaults to system temporary directory.
--diag-allowlist-path TEXTPath to a JSON file that contains allowlist parameters.
--format [TABLE|JSON|JSON_EXT|CSV]Specifies the output format. Default: TABLE.
--verbose, -vDisplays log entries for log levels
infoand higher. Default: False.--debugDisplays log entries for log levels
debugand higher; debug logs contain additional information. Default: False.--silentTurns off intermediate output to console. Default: False.
--enhanced-exit-codesDifferentiate exit error codes based on failure type. Default: False.
--helpDisplays the help text for this command.
Usage notes¶
Running snow app deploy with no phase flags performs the full pipeline:
- Upload phase: Syncs local source files to an internal stage or workspace.
- Build phase: Runs the build phase that produces an immutable package version in the application’s artifact repository.
- Deploy phase: Creates or alters the Application Service from that
package (typically the
LATESTversion). The command converges the service to theapp.ymlspecification.
The command name covers all three phases. Deploy phase means publishing the built package to a running service, not a separate CLI command.
We recommend
account administrator setup
before team deploys to shared account defaults (for example SNOWFLAKE_APPS). If
account defaults aren’t configured,
snow app setup
may resolve to a personal database instead; see
Getting started with Snowflake App Runtime.
Run snow app setup to generate app.yml for your deploy destination.
With named targets, pass --target or set default_target in app.yml.
If a deploy fails partway through, retry just the failed phase:
snow app deploy --upload-only: Re-upload source files without rebuilding or redeploying.snow app deploy --build-only: Re-trigger the build without re-uploading or redeploying.snow app deploy --promote-only: Create or alter the service without re-uploading or rebuilding.
Only one phase flag can be used at a time.
snow app deploy isn’t idempotent. Running it again restarts the selected
phase sequence. If upload and build have already succeeded, use
--promote-only instead of rerunning the full pipeline.
For operating and debugging after deployment:
- Check service state with DESCRIBE APPLICATION SERVICE.
- List services with SHOW APPLICATION SERVICES.
- Read logs with snow app events or SYSTEM$GET_APPLICATION_SERVICE_LOGS.
Troubleshooting deploy and build failures¶
Build runs too long or is canceled¶
Remote builds have a maximum running time measured from when the builder pod
becomes ready (containers running), not from when the build job is submitted.
Queueing, scheduling, image pull, and container startup don’t count toward the
limit. The default maximum is about 12 hours. If a build exceeds the limit,
Snowflake can cancel the job and snow app deploy fails. Retry with
--build-only after you fix long-running install or build steps in your project,
or split work so each build finishes within the limit.
Invalid app.yml during build¶
When your uploaded source includes
app.yml, Snowflake validates
the manifest during the build phase. Syntax errors, invalid icon
paths, or other manifest problems fail the build with an error similar to:
Application service manifest (app.yaml) cannot be parsed. '<details>'.
Fix the manifest locally, then rerun snow app deploy --build-only (or the full
deploy if upload also changed).
Examples¶
Deploy the full pipeline (upload, build, deploy):
Re-trigger only the build after fixing a build error: