Skip to content

Merge pull request #247 from phospho-app/nico/db-migration-2 #109

Merge pull request #247 from phospho-app/nico/db-migration-2

Merge pull request #247 from phospho-app/nico/db-migration-2 #109

name: Deploy to Staging
on:
workflow_dispatch:
push:
paths:
- "backend/**"
- "extractor/**"
branches:
- dev
jobs:
deploy_extractor_staging:
runs-on: ubuntu-latest
environment: staging
permissions:
contents: "read"
id-token: "write"
steps:
- name: Checkout code
uses: actions/checkout@v4
- id: "auth"
uses: "google-github-actions/auth@v2"
env:
GCP_JSON_CREDENTIALS: ${{ secrets.GCP_JSON_CREDENTIALS }}
with:
credentials_json: ${{ secrets.GCP_JSON_CREDENTIALS }}
- name: Set up GCP Cloud SDK
uses: google-github-actions/setup-gcloud@v2
with:
project_id: ${{ vars.GCP_PROJECT_ID }}
- name: "Use gcloud CLI"
run: "gcloud info"
- name: Build the container image
env:
GCP_PROJECT_ID: ${{ vars.GCP_PROJECT_ID }}
run: |
cp -r phospho-python extractor/phospho-python
cd extractor
gcloud builds submit --config cloudbuild-staging.yaml
- name: Deploy to Cloud Run in Staging Env
env:
GCP_PROJECT_ID: ${{ vars.GCP_PROJECT_ID }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
MONGODB_URL: ${{ secrets.MONGODB_URL }}
MONGODB_NAME: ${{ vars.MONGODB_NAME }}
COHERE_API_KEY: ${{ secrets.COHERE_API_KEY }}
EXTRACTOR_SECRET_KEY: ${{ secrets.EXTRACTOR_SECRET_KEY }}
EXTRACTOR_SENTRY_DSN: ${{ secrets.EXTRACTOR_SENTRY_DSN }}
QDRANT_URL: ${{ secrets.QDRANT_URL }}
QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }}
run: |
gcloud run deploy phospho-extractor-staging \
--project $GCP_PROJECT_ID \
--port 7605 \
--region europe-west1 \
--allow-unauthenticated \
--set-env-vars OPENAI_API_KEY=$OPENAI_API_KEY,ENVIRONMENT=staging,MONGODB_URL=$MONGODB_URL,MONGODB_NAME=$MONGODB_NAME,COHERE_API_KEY=$COHERE_API_KEY,EXTRACTOR_SECRET_KEY=$EXTRACTOR_SECRET_KEY,EXTRACTOR_SENTRY_DSN=$EXTRACTOR_SENTRY_DSN,QDRANT_URL=$QDRANT_URL,QDRANT_API_KEY=$QDRANT_API_KEY \
--image europe-west1-docker.pkg.dev/portal-385519/phospho-extractor/app:staging
deploy_backend_staging:
runs-on: ubuntu-latest
environment: staging
permissions:
contents: "read"
id-token: "write"
steps:
- name: Checkout code
uses: actions/checkout@v4
- id: "auth"
uses: "google-github-actions/auth@v2"
env:
GCP_JSON_CREDENTIALS: ${{ secrets.GCP_JSON_CREDENTIALS }}
with:
credentials_json: ${{ secrets.GCP_JSON_CREDENTIALS }}
- name: Set up GCP Cloud SDK
uses: google-github-actions/setup-gcloud@v2
with:
project_id: ${{ vars.GCP_PROJECT_ID }}
- name: "Use gcloud CLI"
run: "gcloud info"
- name: Build the container image
env:
GCP_PROJECT_ID: ${{ vars.GCP_PROJECT_ID }}
run: |
cp -r phospho-python backend/phospho-python
cd backend
gcloud builds submit --config cloudbuild-staging.yaml
- name: Deploy to Cloud Run in Staging Env
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }}
GCP_PROJECT_ID: ${{ vars.GCP_PROJECT_ID }}
SLACK_URL: ${{ secrets.SLACK_URL }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
PROPELAUTH_API_KEY: ${{ secrets.PROPELAUTH_API_KEY }}
PROPELAUTH_URL: ${{ vars.PROPELAUTH_URL }}
MONGODB_URL: ${{ secrets.MONGODB_URL }}
MONGODB_NAME: ${{ vars.MONGODB_NAME }}
QDRANT_URL: ${{ secrets.QDRANT_URL }}
QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }}
COHERE_API_KEY: ${{ secrets.COHERE_API_KEY }}
PHOSPHO_API_KEY_ONBOARDING: ${{ secrets.PHOSPHO_API_KEY_ONBOARDING }}
STRIPE_SECRET_KEY: ${{ secrets.STRIPE_SECRET_KEY }}
STRIPE_WEBHOOK_SECRET: ${{ secrets.STRIPE_WEBHOOK_SECRET }}
EXTRACTOR_SECRET_KEY: ${{ secrets.EXTRACTOR_SECRET_KEY }}
EXTRACTOR_URL: ${{ vars.EXTRACTOR_URL }}
ANYSCALE_API_KEY: ${{ secrets.ANYSCALE_API_KEY }}
run: |
gcloud run deploy phospho-backend-staging \
--project $GCP_PROJECT_ID \
--port 80 \
--region europe-west1 \
--allow-unauthenticated \
--set-env-vars OPENAI_API_KEY=$OPENAI_API_KEY,RESEND_API_KEY=$RESEND_API_KEY,ENVIRONMENT=staging,SLACK_URL=$SLACK_URL,SENTRY_DSN=$SENTRY_DSN,PROPELAUTH_API_KEY=$PROPELAUTH_API_KEY,PROPELAUTH_URL=$PROPELAUTH_URL,MONGODB_URL=$MONGODB_URL,MONGODB_NAME=$MONGODB_NAME,QDRANT_URL=$QDRANT_URL,QDRANT_API_KEY=$QDRANT_API_KEY,COHERE_API_KEY=$COHERE_API_KEY,PHOSPHO_API_KEY_ONBOARDING=$PHOSPHO_API_KEY_ONBOARDING,STRIPE_SECRET_KEY=$STRIPE_SECRET_KEY,STRIPE_WEBHOOK_SECRET=$STRIPE_WEBHOOK_SECRET,EXTRACTOR_SECRET_KEY=$EXTRACTOR_SECRET_KEY,EXTRACTOR_URL=$EXTRACTOR_URL,ANYSCALE_API_KEY=$ANYSCALE_API_KEY \
--image europe-west1-docker.pkg.dev/portal-385519/phospho-backend/app:staging
run_python_integration_tests:
needs: [deploy_extractor_staging, deploy_backend_staging]
runs-on: ubuntu-latest
environment: staging
permissions:
contents: "read"
defaults:
run:
working-directory: backend
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Poetry
uses: snok/install-poetry@v1
with:
virtualenvs-create: true
virtualenvs-in-project: true
installer-parallel: true
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: "poetry"
# Install dependencies if cache does not exist
- name: Install dependencies
run: |
poetry install --with dev --no-interaction --no-root
- name: Test with pytest
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
FIREBASE_TEST_KEY: ${{ secrets.FIREBASE_TEST_KEY }}
FIREBASE_PRODUCTION_KEY: ${{ secrets.FIREBASE_PRODUCTION_KEY }}
RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }}
ENVIRONMENT: "staging"
SLACK_URL: ${{ secrets.SLACK_URL }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
PROPELAUTH_API_KEY: ${{ secrets.PROPELAUTH_API_KEY }}
PROPELAUTH_URL: ${{ vars.PROPELAUTH_URL }}
MONGODB_URL: ${{ secrets.MONGODB_URL }}
MONGODB_NAME: ${{ vars.MONGODB_NAME }}
QDRANT_URL: ${{ secrets.QDRANT_URL }}
QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }}
# Test API key for the phospho API
PHOSPHO_API_KEY: ${{ secrets.PHOSPHO_API_KEY }}
PHOSPHO_BACKEND_URL: ${{ vars.PHOSPHO_BACKEND_URL }}
TEST_PROPELAUTH_ORG_ID: ${{ vars.TEST_PROPELAUTH_ORG_ID }}
TEST_PROPELAUTH_USER_ID: ${{ vars.TEST_PROPELAUTH_USER_ID }}
COHERE_API_KEY: ${{ secrets.COHERE_API_KEY }}
PHOSPHO_API_KEY_ONBOARDING: ${{ secrets.PHOSPHO_API_KEY_ONBOARDING }}
STRIPE_SECRET_KEY: ${{ secrets.STRIPE_SECRET_KEY }}
STRIPE_WEBHOOK_SECRET: ${{ secrets.STRIPE_WEBHOOK_SECRET }}
EXTRACTOR_SECRET_KEY: ${{ secrets.EXTRACTOR_SECRET_KEY }}
EXTRACTOR_URL: ${{ vars.EXTRACTOR_URL }}
ANYSCALE_API_KEY: ${{ secrets.ANYSCALE_API_KEY }}
# Specify here the tests you want to run after the -k flag
run: |
source .venv/bin/activate
poetry run pytest tests/integration/ -vvv