From e545fa9d250f3dd5c16aab1da47c82fecce557af Mon Sep 17 00:00:00 2001 From: Jo Franchetti Date: Thu, 4 Sep 2025 12:05:55 +0100 Subject: [PATCH] warn if no api keys, dont fail --- .github/workflows/deploy-orama-search.yml | 27 ++++++++++++++----- orama/upload_orama_index.ts | 32 ++++++++++++++++------- 2 files changed, 43 insertions(+), 16 deletions(-) diff --git a/.github/workflows/deploy-orama-search.yml b/.github/workflows/deploy-orama-search.yml index e6accefee..9249c7ee3 100644 --- a/.github/workflows/deploy-orama-search.yml +++ b/.github/workflows/deploy-orama-search.yml @@ -85,20 +85,35 @@ jobs: if: steps.changes.outputs.content_changed == 'true' run: | echo "Uploading search index to Orama Cloud..." + if [ -z "$ORAMA_PRIVATE_API_KEY" ] || [ -z "$ORAMA_PROJECT_ID" ] || [ -z "$ORAMA_DATASOURCE_ID" ]; then + echo "⚠️ Missing Orama Cloud credentials - skipping upload" + echo "This is expected for external contributors and forks" + exit 0 + fi deno task search:upload env: ORAMA_PROJECT_ID: ${{ vars.ORAMA_PROJECT_ID }} ORAMA_DATASOURCE_ID: ${{ vars.ORAMA_DATASOURCE_ID }} ORAMA_PRIVATE_API_KEY: ${{ secrets.ORAMA_PRIVATE_API_KEY }} - - name: Report deployment success + - name: Report deployment status if: steps.changes.outputs.content_changed == 'true' run: | - echo "Search index deployment completed successfully!" - echo "Updated search includes:" - echo " Documentation pages" - echo " API references (Deno, Web, Node.js)" - echo " Total searchable documents: ~5,856" + if [ -n "$ORAMA_PRIVATE_API_KEY" ] && [ -n "$ORAMA_PROJECT_ID" ] && [ -n "$ORAMA_DATASOURCE_ID" ]; then + echo "✅ Search index deployment completed successfully!" + echo "Updated search includes:" + echo " 📄 Documentation pages" + echo " 🔧 API references (Deno, Web, Node.js)" + echo " 📊 Total searchable documents: ~5,856" + else + echo "⏭️ Search index upload was skipped (missing credentials)" + echo "📝 Generated search index files are available in the build artifacts" + echo "🔍 Search functionality will use the existing deployed index" + fi + env: + ORAMA_PROJECT_ID: ${{ vars.ORAMA_PROJECT_ID }} + ORAMA_DATASOURCE_ID: ${{ vars.ORAMA_DATASOURCE_ID }} + ORAMA_PRIVATE_API_KEY: ${{ secrets.ORAMA_PRIVATE_API_KEY }} - name: Skip deployment message if: steps.changes.outputs.content_changed == 'false' diff --git a/orama/upload_orama_index.ts b/orama/upload_orama_index.ts index 7965ae6ca..96471b799 100644 --- a/orama/upload_orama_index.ts +++ b/orama/upload_orama_index.ts @@ -46,25 +46,28 @@ interface UploadOptions { /** * Load Orama configuration from environment variables */ -function loadOramaConfig(): OramaConfig { +function loadOramaConfig(): OramaConfig | null { const projectId = Deno.env.get("ORAMA_PROJECT_ID"); const datasourceId = Deno.env.get("ORAMA_DATASOURCE_ID"); const privateApiKey = Deno.env.get("ORAMA_PRIVATE_API_KEY"); if (!datasourceId || !privateApiKey || !projectId) { - console.error("❌ Missing required environment variables:"); - console.error(" ORAMA_DATASOURCE_ID - Your Orama Cloud index ID"); - console.error(" ORAMA_PROJECT_ID - Your Orama Cloud project ID"); - console.error( + console.warn("⚠️ Missing required Orama Cloud environment variables:"); + console.warn(" ORAMA_DATASOURCE_ID - Your Orama Cloud index ID"); + console.warn(" ORAMA_PROJECT_ID - Your Orama Cloud project ID"); + console.warn( " ORAMA_PRIVATE_API_KEY - Your private API key for uploads", ); - console.error(""); - console.error("Example:"); - console.error( + console.warn(""); + console.warn("This is expected for external contributors and forks."); + console.warn("The search index upload will be skipped."); + console.warn(""); + console.warn("If you need to upload the search index, set these variables:"); + console.warn( ' export ORAMA_DATASOURCE_ID="your-index-id"', ); - console.error(' export ORAMA_PRIVATE_API_KEY="your-private-api-key"'); - Deno.exit(1); + console.warn(' export ORAMA_PRIVATE_API_KEY="your-private-api-key"'); + return null; } return { datasourceId, privateApiKey, projectId }; @@ -81,6 +84,7 @@ interface IndexData { [key: string]: unknown; }; documents: OramaDocument[]; + data?: OramaDocument[]; // Alternative property name for documents } interface OramaDocument { @@ -253,6 +257,14 @@ async function main() { // Load configuration const config = loadOramaConfig(); + + // If config is null (missing API keys), skip upload but don't fail + if (!config) { + console.log("🔄 Skipping Orama search index upload due to missing configuration."); + console.log("This is normal for external contributors and forks."); + return; + } + console.log(`Target index: ${config.datasourceId}`); // Determine input file path (auto-detect full vs minimal and _site vs static)