Blossom Logo Blossom

Deploy Hooks

5 min read

Deploy Hooks let you run custom commands at different stages of your deployment process. Configure them in your app’s Deploy Hooks settings.

Deployment Flow

1
Build Complete
2
Post Build Hook
3
Release Phase Hook
4
Deploy & Start App
5
Post Deploy Hook
i
Failure Behavior
Post Build failure: Stops build - image won't be created.
Release Phase failure: Stops deployment.
Post Deploy failure: Doesn't affect deployment.

Available Hooks

Post Build Hook

  • When: After buildpack/build, before final image
  • Purpose: Installing packages, setting up tools, custom build steps
  • Failure impact: Stops build - image won’t be created
# Install packages
apt-get update && apt-get install -y curl jq postgresql-client

# Or use a build script
.blossom/post-build

Release Phase Hook

  • When: Before each deployment, after build
  • Purpose: Database migrations, cache warming, setup tasks
  • Failure impact: Stops deployment
# Database migrations
bundle exec rails db:migrate
python manage.py migrate
npm run migrate

# Cache warming
bundle exec rails runner 'CacheWarmupJob.perform_later'

Post Deploy Hook

  • When: After successful deployment
  • Purpose: Notifications, cleanup, monitoring setup
  • Failure impact: Doesn’t affect deployment - app keeps running
# Send notifications
curl -X POST $WEBHOOK_URL/deployed

# Background tasks
bundle exec rails runner 'NotificationJob.perform_later'

Quick Setup

  1. Enable the hook in Deploy Hooks settings
  2. Enter your command (or reference a script file)
  3. Deploy - hooks run automatically

For complex Post Build Hooks, create .blossom/post-build:

#!/bin/bash
set -e

echo "===> Installing packages..."
apt-get update && apt-get install -y curl jq

echo "===> Setting up environment..."
echo "export CUSTOM_VAR=value" >> /etc/environment

echo "===> Post build completed"

Then use: .blossom/post-build in your Post Build Hook setting.

What You Can Do

  • Install packages: apt-get install -y curl jq
  • Run migrations: bundle exec rails db:migrate
  • Send notifications: curl -X POST $WEBHOOK_URL/deployed
  • Warm caches: bundle exec rails runner 'CacheWarmupJob.perform_later'
  • Setup monitoring: Install monitoring tools, configure alerts
  • Custom setup: Any command your app needs