Skip to content

Deploy

Deploy #25

Workflow file for this run

name: Deploy
on:
release:
types: [published]
workflow_dispatch: # Allow manual deployment
jobs:
deploy:
name: Deploy to Cloudflare Workers
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: "pnpm"
- name: Install Dependencies
run: pnpm install --frozen-lockfile
- name: Build Services
run: pnpm build
- name: Setup Wrangler
run: pnpm add -g wrangler
- name: Create Database
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
run: |
# Check if database exists
DB_LIST=$(wrangler d1 list --json)
DB_ID=$(echo "$DB_LIST" | jq -r '.[] | select(.name == "edgeauth-db") | .uuid')
if [ -z "$DB_ID" ]; then
echo "Creating database edgeauth-db..."
DB_OUTPUT=$(wrangler d1 create edgeauth-db --json)
DB_ID=$(echo "$DB_OUTPUT" | jq -r '.uuid')
echo "Database created with ID: $DB_ID"
else
echo "Database edgeauth-db already exists with ID: $DB_ID"
fi
echo "DB_ID=$DB_ID" >> $GITHUB_ENV
- name: Update Wrangler Configs
run: |
# Update all wrangler.toml files with the database ID
for config in wrangler.toml services/*/wrangler.toml; do
echo "Updating $config..."
sed -i "s/database_id = \"placeholder\".*/database_id = \"$DB_ID\"/" "$config"
done
- name: Apply Migrations
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
run: |
echo "Applying database migrations..."
wrangler d1 migrations apply edgeauth-db --remote
- name: Configure Secrets
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
JWT_SECRET: ${{ secrets.JWT_SECRET }}
PLUNK_API_KEY: ${{ secrets.PLUNK_API_KEY }}
run: |
echo "Configuring Worker secrets..."
# Set JWT_SECRET for all services
for service in edgeauth-admin edgeauth-account edgeauth-sso edgeauth-oauth; do
echo "Setting JWT_SECRET for $service..."
echo "$JWT_SECRET" | wrangler secret put JWT_SECRET --name $service
done
# Set PLUNK_API_KEY for account-api (email service)
echo "Setting PLUNK_API_KEY for edgeauth-account..."
echo "$PLUNK_API_KEY" | wrangler secret put PLUNK_API_KEY --name edgeauth-account
- name: Deploy Admin API
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
working-directory: services/admin-api
run: wrangler deploy
- name: Deploy Account API
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
working-directory: services/account-api
run: wrangler deploy
- name: Deploy SSO API
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
working-directory: services/sso-api
run: wrangler deploy
- name: Deploy OAuth API
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
working-directory: services/oauth-api
run: wrangler deploy
- name: Deploy Account Portal (Frontend)
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
working-directory: apps/account-portal
run: |
# Check if Pages project exists, create if not
if ! wrangler pages project list 2>&1 | grep -q "edgeauth-account-portal"; then
echo "Creating Pages project edgeauth-account-portal..."
wrangler pages project create edgeauth-account-portal --production-branch=main
fi
# Deploy to Pages (will use custom domain: account.deepractice.ai)
wrangler pages deploy dist --project-name=edgeauth-account-portal --commit-dirty=true
- name: Deployment Summary
run: |
echo "## ✅ Deployment Successful" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Database:** edgeauth-db (\`$DB_ID\`)" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Services Deployed:**" >> $GITHUB_STEP_SUMMARY
echo "- edgeauth-admin" >> $GITHUB_STEP_SUMMARY
echo "- edgeauth-account" >> $GITHUB_STEP_SUMMARY
echo "- edgeauth-sso" >> $GITHUB_STEP_SUMMARY
echo "- edgeauth-oauth" >> $GITHUB_STEP_SUMMARY
echo "- edgeauth-account-portal (Pages → account.deepractice.ai)" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Next Steps:**" >> $GITHUB_STEP_SUMMARY
echo "1. Verify secrets are set: \`JWT_SECRET\`, \`PLUNK_API_KEY\`" >> $GITHUB_STEP_SUMMARY
echo "2. Test API endpoints" >> $GITHUB_STEP_SUMMARY