Last updated 2026-09-04Development preview

Deploy to GCP

Configure a cloud environment, bootstrap its foundation, deploy an application, and verify readiness.


Deployment turns a resolved application graph into cloud infrastructure and running code. It also changes durable state: database migrations and published images are part of the operation. Start with a working local application.

#Understand: source, plan, and running state

These are separate checkpoints:

CheckpointWhat it establishes
SDK generationApplication code has clients for the declared runtime grants
Deployment previewThe proposed infrastructure changes have been inspected
Deployment applyFluffy attempts the infrastructure, build, migration, and activation stages
ValidationSource correspondence, generated output, and cloud readiness pass the selected check
Application requestYour own route and business behavior work against that deployment

Generating an SDK does not grant cloud access. A successful preview does not apply its changes. If a deployment fails halfway through, earlier stages may have completed: use the reported stage to decide what to repair.

The workspace chooses the GCP project and placement. The active gcloud project does not override that configuration. Fluffy owns Pulumi execution, including when generated deployment code is checked into the application.

#Configure: prepare and deploy one application

Use the current source CLI from the start guide; no Fluffy release publication is required. Install Pulumi, Google Cloud CLI, and Docker with a running daemon. Authenticate Application Default Credentials (ADC):

Terminal
gcloud auth application-default login

Keep a stable PULUMI_CONFIG_PASSPHRASE in your secret store and supply it to deployment commands. Do not put it in YAML. Retain a recoverable copy outside the repository: later operations need to read the same encrypted state.

Required IAM permissions depend on the selected graph. Publication also needs Docker authentication for the selected regional Artifact Registry host. Referenced Cloud SQL needs the provider's inspection tools, including psql; database configuration explains the managed/reference distinction.

#Select cloud placement

Merge this environment into fluffy-chainsaw.workspace.yaml, replacing the project with yours and preserving the workspace's resource types and defaults:

yaml
environments:
  prod:
    deployment: {provider: application}
    providers:
      application:
        type: gcp
        project: your-application-project
        region: europe-west1
        zone: europe-west1-b

The provider entry supplies placement. Resource defaults still determine how runtimes, databases, storage, messaging, and authentication are implemented. Review database recovery policy before applying stateful changes.

#Establish the shared foundation

From the exact workspace root:

Terminal
fluffy-chainsaw deploy bootstrap --environment prod --check
fluffy-chainsaw deploy bootstrap --environment prod

Inspect the first command's plan before applying. Bootstrap owns shared deployment infrastructure and state. Project creation, billing, or API enablement may require a staged apply and a new preview; follow the output. The CLI reference lists organization and billing selection options.

#Generate clients and optional deployment code

Replace example-app with your application:

fluffy-chainsaw generate --application example-app --all --language typescript

For reviewed, checked-in deployment code, declare the directory in that application's fluffy-chainsaw.yaml:

yaml
environments:
  prod:
    deployment: deployment/prod

Then generate the environment project:

Terminal
fluffy-chainsaw generate --application example-app --environment prod

Review and commit generated output. Regenerate it after relevant source changes; do not hand-edit it or run Pulumi from that directory. Generated deployment code explains drift checks.

#Preview, apply, and verify

Terminal
fluffy-chainsaw deploy --application example-app --environment prod --check
fluffy-chainsaw deploy --application example-app --environment prod
fluffy-chainsaw validate --application example-app --environment prod

Interactive apply asks you to confirm the plan. Noninteractive application apply requires --yes; --check does not accept it.

Deployment rechecks the plan, reconciles infrastructure, builds and publishes images, performs database administration and migrations, activates services, publishes static hosting, and validates endpoints. Deploy other applications separately; there is no deploy-all command.

Use reported URLs to check a harmless health route and a real application operation. A database's local seed does not run in production: create test data through your application's normal flow instead of expecting local demonstration rows.

#Reference: incomplete deployment and ownership

OutcomeWhat to do
Build failedCorrect the artifact source or builder input and preview again
Migration failedInspect the migration's result before retrying; later activation may not have run
Generated code driftRegenerate the selected environment project and review the diff
Expired ADCRefresh ADC and repeat the failed command
Action requiredFollow the exact project/domain/permission in deployment actions
DNS correct, certificate pendingWait for provider reconciliation, then validate again
Lock heldEstablish that the owner stopped before using explicit stale-lock recovery

Removing a declaration is not a request to erase its data. Protected resources can remain, and Fluffy has no public destroy command. Export and uninstall explains how to transfer ownership or remove Premium separately.