liftoff

module
v1.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 15, 2025 License: MIT

README ยถ

Centered Image

Liftoff

Welcome to Liftoff ๐Ÿš€ Your goโ€‘to CLI for multiโ€‘region Cloud Run canary deployments! This README will guide you through installation, configuration, and usage with plenty of examples and emojis to keep things fun ๐ŸŽ‰.

Build badge MIT

๐Ÿ“ฅ Pre-requisites

This CLI heavily relies on the GCLOUD cli tool. You must have it installed. If you don't, follow this guide

๐Ÿ› ๏ธ Installation

Make sure you have Go 1.20+ installed and your GOPATH configured. Then:

# Install the CLI
go install github.com/framequery/liftoff/cmd/liftoff@latest

# Verify installation
liftoff --help

You can also build from source:

git clone https://github.com/framequery/liftoff.git
cd liftoff
go build -o liftoff ./cmd/liftoff

โš™๏ธ Configuration

By default, liftoff saves your settings to $TMP/liftoff_config.json. You can override options via flags or environment variables.

Option Env Var Description Default
--project LIFTOFF_PROJECT GCP project ID none (required)
--service LIFTOFF_SERVICE Cloud Run service name none (required)
--image LIFTOFF_IMAGE Container image URL for the canary revision none (required)
--regions LIFTOFF_REGIONS Commaโ€‘separated GCP regions (e.g. europe-west2,europe-west4) europe-west2,europe-west4
--percentages LIFTOFF_PCTS Traffic percentages (e.g. 10,50,100) 10,50,100
--intervals LIFTOFF_INTVLS Seconds between rollout steps (e.g. 300,300) 300,300
--ingress LIFTOFF_INGRESS Kinds of allowed ingress internal-only
--env-vars LIFTOFF_ENV_VARS Comma-separated KEY=VALUE pairs none

Once you have liftoff installed, here are some example workflows:

๐ŸŽฏ Default canary rollout

liftoff canary \
  --project=my-gcp-project \
  --service=my-service \
  --image=gcr.io/my-gcp-project/my-app:canary
  • Deploys no-traffic revisions in europe-west2 & europe-west4.
  • Routes 10% โ†’ wait 5m โ†’ 50% โ†’ wait 5m โ†’ 100%.

๐ŸŒ Custom regions & speed

liftoff canary \
  --project=my-gcp-project \
  --service=api-service \
  --image=gcr.io/my-gcp-project/api:v2 \
  --regions=us-central1,asia-northeast1 \
  --percentages=5,25,50,100 \
  --intervals=60,120,180
  • Targets us-central1 and asia-northeast1.
  • Gradually shifts traffic 5% โ†’ wait 1m โ†’ 25% โ†’ wait 2m โ†’ 50% โ†’ wait 3m โ†’ 100%.

๐ŸŒณ Environment variables

liftoff canary \
  --project=my-gcp-project \
  --service=api-service \
  --image=gcr.io/my-gcp-project/api:v2 \
  --regions=us-central1,asia-northeast1 \
  --percentages=5,25,50,100 \
  --intervals=60,120,180 \
  --env-vars=GOOGLE_PROJECT_ID=canary,DEBUG=true"

โšก Instant full rollout

liftoff canary \
  --project=my-gcp-project \
  --service=static-site \
  --image=gcr.io/my-gcp-project/site:latest \
  --percentages=100 \
  --intervals=0
  • Skips staging phases and sends 100% traffic immediately.

โš™๏ธ Config & Defaults

# Save defaults for 'internal-api'
liftoff config set internal-api \
  --project=my-gcp-project \
  --image=gcr.io/my-gcp-project/internal-api:canary \
  --regions=europe-west2,europe-west4 \
  --percentages=10,50,100 \
  --intervals=300,300

# View all saved configs
liftoff config view
  • You can set/view default config settings per service video with the config command

๐Ÿ” Flags & Commands Reference

liftoff --help
liftoff canary --help

Key flags for canary:

  • --project, -p : GCP project ID (required)
  • --service, -s : Cloud Run service name (required)
  • --image, -i : Container image URL (required)
  • --regions : Regions list
  • --percentages : Traffic split percentages
  • --intervals : Seconds between shifts

โค๏ธ Contributing

We โค๏ธ pull requests!

  1. Fork โœ…
  2. Create a feature branch ๐ŸŒฟ
  3. Write tests ๐Ÿงช
  4. Send PR ๐Ÿ“ฌ

Please follow our Contributing Guidelines.


๐Ÿ“œ License

MIT

Enjoy safe liftoffs! ๐Ÿš€ Made by Framequery

Directories ยถ

Path Synopsis
cmd
liftoff command
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL