snow app deploy¶
Uploads your project source to Snowflake, builds it remotely, and starts or upgrades the Application Service. This is the primary command for shipping changes to a Snowflake App Runtime project.
When the project snowflake.yml contains a snowflake-app entity, snow app deploy runs the Snowflake App Runtime flow (upload, build, deploy). When it
contains a Native App entity, the command runs the Native App flow instead.
Syntax¶
Arguments¶
None
Options¶
--upload-onlyRe-upload source files without rebuilding or redeploying. Only one of
--upload-only,--build-only, or--deploy-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--deploy-onlycan be used at a time. Default: False.--deploy-onlyCreate or upgrade the Application Service without re-uploading or rebuilding. Only one of
--upload-only,--build-only, or--deploy-onlycan be used at a time. Default: False.--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.
--schema, --schemaname TEXTDatabase schema to use. Overrides the value specified for the connection.
--role, --rolename TEXTRole to use. Overrides the value specified for the connection.
--warehouse TEXTWarehouse to use. Overrides the value specified for the connection.
--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: Syncs local source files to an internal stage.
- Build: Triggers the managed build service using managed compute pools and produces an immutable package version for your app.
- Deploy: Creates or upgrades the Application Service from the build output.
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 snowflake.yml for your deploy destination.
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 --deploy-only: Create or upgrade the service without re-uploading or rebuilding.
Only one phase flag can be used at a time.
snow app deploy is not idempotent. Running it again restarts the selected
phase sequence. If upload and build have already succeeded, use
--deploy-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 profile.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: