Skip to content

Commit

Permalink
Merge pull request #1130 from andrew-bierman/feat/preview-version-of-api
Browse files Browse the repository at this point in the history
Feat/preview version of api
  • Loading branch information
taronaleksanian authored Jul 26, 2024
2 parents 35bdf2e + 29a39fe commit fbdbd5c
Show file tree
Hide file tree
Showing 5 changed files with 343 additions and 84 deletions.
135 changes: 135 additions & 0 deletions .github/actions/setup-wrangler-toml/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
name: 'Generate Wrangler TOML'
description: 'Generates the wrangler.toml file for Cloudflare Workers'
inputs:
GOOGLE_CLIENT_ID:
description: 'Google Client ID'
required: true
GOOGLE_CLIENT_SECRET:
description: 'Google Client Secret'
required: true
STMP_EMAIL:
description: 'SMTP Email'
required: true
STMP_PASSWORD:
description: 'SMTP Password'
required: true
JWT_SECRET:
description: 'JWT Secret'
required: true
SEND_GRID_API_KEY:
description: 'Send Grid API Key'
required: true
MAPBOX_ACCESS_TOKEN:
description: 'Mapbox Access Token'
required: true
OPENWEATHER_KEY:
description: 'OpenWeather Key'
required: true
VECTORIZE_API_KEY:
description: 'Vectorize API Key'
required: true
CLOUDFLARE_ACCOUNT_ID:
description: 'Cloudflare Account ID'
required: true
OPENAI_API_KEY:
description: 'OpenAI API Key'
required: true
PREVIEW_DB_ID:
description: 'Preview DB ID'
required: true
PRODUCTION_DB_ID:
description: 'Production DB ID'
required: true
PREVIEW_GOOGLE_CLIENT_ID:
description: 'Preview Google Client ID'
required: true
PREVIEW_GOOGLE_CLIENT_SECRET:
description: 'Preview Google Client Secret'
required: true
PREVIEW_STMP_EMAIL:
description: 'Preview SMTP Email'
required: true
PREVIEW_STMP_PASSWORD:
description: 'Preview SMTP Password'
required: true
PREVIEW_JWT_SECRET:
description: 'Preview JWT Secret'
required: true
PREVIEW_SEND_GRID_API_KEY:
description: 'Preview Send Grid API Key'
required: true
PREVIEW_MAPBOX_ACCESS_TOKEN:
description: 'Preview Mapbox Access Token'
required: true
PREVIEW_OPENWEATHER_KEY:
description: 'Preview OpenWeather Key'
required: true
PREVIEW_VECTORIZE_API_KEY:
description: 'Preview Vectorize API Key'
required: true
PREVIEW_CLOUDFLARE_ACCOUNT_ID:
description: 'Preview Cloudflare Account ID'
required: true
PREVIEW_OPENAI_API_KEY:
description: 'Preview OpenAI API Key'
required: true
runs:
using: 'composite'
steps:
- name: Generate wrangler.toml
shell: bash
run: |
echo 'name = "packrat-api"' > ${{ github.workspace }}/server/wrangler.toml
echo 'main = "src/index.ts"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'compatibility_date = "2024-03-14"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'node_compat = true' >> ${{ github.workspace }}/server/wrangler.toml
echo '[env.preview]' >> ${{ github.workspace }}/server/wrangler.toml
echo '[[env.preview.d1_databases]]' >> ${{ github.workspace }}/server/wrangler.toml
echo 'binding = "DB"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'database_name = "preview"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'database_id = "${{ inputs.PREVIEW_DB_ID }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo '[env.preview.ai]' >> ${{ github.workspace }}/server/wrangler.toml
echo 'binding = "AI"' >> ${{ github.workspace }}/server/wrangler.toml
echo '[[env.preview.vectorize]]' >> ${{ github.workspace }}/server/wrangler.toml
echo 'binding = "VECTOR_INDEX"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'index_name = "vector-index-preview"' >> ${{ github.workspace }}/server/wrangler.toml
echo '[env.preview.vars]' >> ${{ github.workspace }}/server/wrangler.toml
echo 'NODE_ENV = "preview"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'GOOGLE_CLIENT_ID = "${{ inputs.GOOGLE_CLIENT_ID }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'GOOGLE_CLIENT_SECRET = "${{ inputs.GOOGLE_CLIENT_SECRET }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'STMP_EMAIL = "${{ inputs.STMP_EMAIL }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'STMP_PASSWORD = "${{ inputs.STMP_PASSWORD }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'JWT_SECRET = "${{ inputs.JWT_SECRET }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'SEND_GRID_API_KEY = "${{ inputs.SEND_GRID_API_KEY }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'MAPBOX_ACCESS_TOKEN = "${{ inputs.MAPBOX_ACCESS_TOKEN }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'OSM_URI = "https://overpass-api.de/api/interpreter"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'WEATHER_URL = "https://api.openweathermap.org/data/2.5/forecast"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'OPENWEATHER_KEY = "${{ inputs.OPENWEATHER_KEY }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'VECTORIZE_API_KEY = "${{ inputs.VECTORIZE_API_KEY }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'CLOUDFLARE_ACCOUNT_ID = "${{ inputs.CLOUDFLARE_ACCOUNT_ID }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'OPENAI_API_KEY = "${{ inputs.OPENAI_API_KEY }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo '[env.production]' >> ${{ github.workspace }}/server/wrangler.toml
echo '[[env.production.d1_databases]]' >> ${{ github.workspace }}/server/wrangler.toml
echo 'binding = "DB"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'database_name = "production"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'database_id = "${{ inputs.PRODUCTION_DB_ID }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo '[env.production.ai]' >> ${{ github.workspace }}/server/wrangler.toml
echo 'binding = "AI"' >> ${{ github.workspace }}/server/wrangler.toml
echo '[[env.production.vectorize]]' >> ${{ github.workspace }}/server/wrangler.toml
echo 'binding = "VECTOR_INDEX"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'index_name = "vector-index"' >> ${{ github.workspace }}/server/wrangler.toml
echo '[env.production.vars]' >> ${{ github.workspace }}/server/wrangler.toml
echo 'NODE_ENV = "production"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'GOOGLE_CLIENT_ID = "${{ inputs.GOOGLE_CLIENT_ID }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'GOOGLE_CLIENT_SECRET = "${{ inputs.GOOGLE_CLIENT_SECRET }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'STMP_EMAIL = "${{ inputs.STMP_EMAIL }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'STMP_PASSWORD = "${{ inputs.STMP_PASSWORD }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'JWT_SECRET = "${{ inputs.JWT_SECRET }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'SEND_GRID_API_KEY = "${{ inputs.SEND_GRID_API_KEY }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'MAPBOX_ACCESS_TOKEN = "${{ inputs.MAPBOX_ACCESS_TOKEN }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'OSM_URI = "https://overpass-api.de/api/interpreter"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'WEATHER_URL = "https://api.openweathermap.org/data/2.5/forecast"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'OPENWEATHER_KEY = "${{ inputs.OPENWEATHER_KEY }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'VECTORIZE_API_KEY = "${{ inputs.VECTORIZE_API_KEY }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'CLOUDFLARE_ACCOUNT_ID = "${{ inputs.CLOUDFLARE_ACCOUNT_ID }}"' >> ${{ github.workspace }}/server/wrangler.toml
echo 'OPENAI_API_KEY = "${{ inputs.OPENAI_API_KEY }}"' >> ${{ github.workspace }}/server/wrangler.toml
91 changes: 91 additions & 0 deletions .github/workflows/backend-preview.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# name: 'Backend Preview Deployment'

# on:
# workflow_dispatch:
# pull_request:
# branches:
# - feat/preview-version-of-api
# types: [closed]
# push:
# branches:
# - feat/preview-version-of-api
# paths:
# - 'packages/validations/**'
# - 'packages/shared-types/**'
# - 'server/**'
# concurrency:
# group: ${{ github.workflow }}-${{ github.ref }}
# cancel-in-progress: true

# jobs:
# deploy:
# name: Deploy to Cloudflare Workers
# runs-on: ubuntu-latest
# timeout-minutes: 10

# steps:
# - name: Checkout code
# uses: actions/checkout@v3
# with:
# fetch-depth: 1

# - name: Setup JS Runtime environment
# uses: ./.github/actions/setup-js-runtime

# - name: Install dependencies
# uses: ./.github/actions/install-deps

# - name: Generate wrangler.toml
# uses: ./.github/actions/setup-wrangler-toml
# with:
# GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }}
# GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET }}
# STMP_EMAIL: ${{ secrets.STMP_EMAIL }}
# STMP_PASSWORD: ${{ secrets.STMP_PASSWORD }}
# JWT_SECRET: ${{ secrets.JWT_SECRET }}
# SEND_GRID_API_KEY: ${{ secrets.SEND_GRID_API_KEY }}
# MAPBOX_ACCESS_TOKEN: ${{ secrets.MAPBOX_ACCESS_TOKEN }}
# OPENWEATHER_KEY: ${{ secrets.OPENWEATHER_KEY }}
# VECTORIZE_API_KEY: ${{ secrets.VECTORIZE_API_KEY }}
# CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
# OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
# PREVIEW_DB_ID: ${{ secrets.PREVIEW_DB_ID }}
# PRODUCTION_DB_ID: ${{ secrets.PRODUCTION_DB_ID }}
# PREVIEW_GOOGLE_CLIENT_ID: ${{ secrets.PREVIEW_GOOGLE_CLIENT_ID }}
# PREVIEW_GOOGLE_CLIENT_SECRET: ${{ secrets.PREVIEW_GOOGLE_CLIENT_SECRET }}
# PREVIEW_STMP_EMAIL: ${{ secrets.PREVIEW_STMP_EMAIL }}
# PREVIEW_STMP_PASSWORD: ${{ secrets.PREVIEW_STMP_PASSWORD }}
# PREVIEW_JWT_SECRET: ${{ secrets.PREVIEW_JWT_SECRET }}
# PREVIEW_SEND_GRID_API_KEY: ${{ secrets.PREVIEW_SEND_GRID_API_KEY }}
# PREVIEW_MAPBOX_ACCESS_TOKEN: ${{ secrets.PREVIEW_MAPBOX_ACCESS_TOKEN }}
# PREVIEW_OPENWEATHER_KEY: ${{ secrets.PREVIEW_OPENWEATHER_KEY }}
# PREVIEW_VECTORIZE_API_KEY: ${{ secrets.PREVIEW_VECTORIZE_API_KEY }}
# PREVIEW_CLOUDFLARE_ACCOUNT_ID: ${{ secrets.PREVIEW_CLOUDFLARE_ACCOUNT_ID }}
# PREVIEW_OPENAI_API_KEY: ${{ secrets.PREVIEW_OPENAI_API_KEY }}

# - name: Migrate database
# # run: cd packages/api && bun run migrate
# run: cd server && yarn run migrate:preview
# env:
# NO_D1_WARNING: true
# CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}

# - name: Deploy
# uses: cloudflare/[email protected]
# with:
# wranglerVersion: '3.15.0'
# apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
# # workingDirectory: packages/api
# workingDirectory: server
# command: yarn run deploy:preview
# # packageManager: bun
# packageManager: yarn
# secrets: |
# APP_URL
# JWT_VERIFICATION_KEY
# CI
# env:
# APP_URL: ${{ secrets.VITE_PUBLIC_APP_URL }}
# JWT_VERIFICATION_KEY: ${{ secrets.JWT_SECRET }}
# CI: true
# NO_D1_WARNING: true
Loading

0 comments on commit fbdbd5c

Please sign in to comment.