Gamma Deploy Integration
Overview
Deploy Gamma-integrated applications to various cloud platforms with proper configuration and secret management.
Prerequisites
-
Completed CI integration
-
Cloud platform account (Vercel, AWS, or GCP)
-
Production Gamma API key
Instructions
Vercel Deployment
Step 1: Configure Vercel Project
set -euo pipefail
Install Vercel CLI
npm i -g vercel
Link project
vercel link
Set environment variable
vercel env add GAMMA_API_KEY production
Step 2: Create vercel.json
{ "framework": "nextjs", "buildCommand": "npm run build", "env": { "GAMMA_API_KEY": "@gamma_api_key" }, "functions": { "api/**/*.ts": { "maxDuration": 30 } } }
Step 3: Deploy
Preview deployment
vercel
Production deployment
vercel --prod
AWS Lambda Deployment
Step 1: Store Secret in AWS Secrets Manager
aws secretsmanager create-secret
--name gamma/api-key
--secret-string '{"apiKey":"your-gamma-api-key"}'
Step 2: Lambda Configuration
// lambda/gamma-handler.ts import { SecretsManager } from '@aws-sdk/client-secrets-manager'; import { GammaClient } from '@gamma/sdk';
const secretsManager = new SecretsManager({ region: 'us-east-1' }); let gamma: GammaClient;
async function getGammaClient() { if (!gamma) { const secret = await secretsManager.getSecretValue({ SecretId: 'gamma/api-key', }); const { apiKey } = JSON.parse(secret.SecretString!); gamma = new GammaClient({ apiKey }); } return gamma; }
export async function handler(event: any) { const client = await getGammaClient(); const result = await client.presentations.create({ title: event.title, prompt: event.prompt, }); return { statusCode: 200, body: JSON.stringify(result) }; # HTTP 200 OK }
Step 3: SAM Template
template.yaml
AWSTemplateFormatVersion: '2010-09-09' # 2010 = configured value Transform: AWS::Serverless-2016-10-31 # 2016 = configured value
Resources: GammaFunction: Type: AWS::Serverless::Function Properties: Handler: dist/gamma-handler.handler Runtime: nodejs20.x Timeout: 30 MemorySize: 256 # 256 bytes Policies: - SecretsManagerReadWrite Environment: Variables: NODE_ENV: production
Google Cloud Run Deployment
Step 1: Store Secret
echo -n "your-gamma-api-key" |
gcloud secrets create gamma-api-key --data-file=-
Step 2: Dockerfile
FROM node:20-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY dist ./dist CMD ["node", "dist/server.js"]
Step 3: Deploy
set -euo pipefail
gcloud run deploy gamma-service
--image gcr.io/$PROJECT_ID/gamma-service
--platform managed
--region us-central1
--set-secrets GAMMA_API_KEY=gamma-api-key:latest
--allow-unauthenticated
GitHub Actions Deployment
.github/workflows/deploy.yml
name: Deploy
on: push: branches: [main]
jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
- name: Build
run: npm ci && npm run build
- name: Deploy to Vercel
uses: amondnet/vercel-action@v25
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
vercel-args: '--prod'
Output
-
Production deployment on chosen platform
-
Secrets securely stored
-
Environment variables configured
-
Automated deployment pipeline
Error Handling
Error Cause Solution
Secret not found Missing secret Create secret in platform
Timeout Function too slow Increase timeout limit
Cold start Lambda initialization Use provisioned concurrency
Permission denied IAM misconfigured Update IAM policies
Resources
-
Vercel Documentation
-
AWS Lambda Documentation
-
Google Cloud Run
Next Steps
Proceed to gamma-webhooks-events for event handling.
Examples
Basic usage: Apply gamma deploy integration to a standard project setup with default configuration options.
Advanced scenario: Customize gamma deploy integration for production environments with multiple constraints and team-specific requirements.