fix(docs,marketing): stop blocking /_next/ in robots.txt so Google can fetch render assets #8415
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Deploy Preview | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| paths-ignore: | |
| - "apps/desktop/**" | |
| concurrency: | |
| group: preview-${{ github.event.pull_request.number }} | |
| cancel-in-progress: true | |
| env: | |
| VERCEL_CLI_VERSION: 50.22.1 | |
| PR_NUMBER: ${{ github.event.pull_request.number }} | |
| API_ALIAS: api-pr-${{ github.event.pull_request.number }}-superset.vercel.app | |
| WEB_ALIAS: web-pr-${{ github.event.pull_request.number }}-superset.vercel.app | |
| MARKETING_ALIAS: marketing-pr-${{ github.event.pull_request.number }}-superset.vercel.app | |
| ADMIN_ALIAS: admin-pr-${{ github.event.pull_request.number }}-superset.vercel.app | |
| DOCS_ALIAS: docs-pr-${{ github.event.pull_request.number }}-superset.vercel.app | |
| jobs: | |
| deploy-database: | |
| name: Deploy Database (Neon) | |
| runs-on: ubuntu-latest | |
| environment: preview | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 | |
| - name: Setup Bun | |
| id: setup-bun | |
| uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 | |
| with: | |
| bun-version-file: .bun-version | |
| - name: Cache dependencies | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 | |
| with: | |
| path: ~/.bun/install/cache | |
| key: ${{ runner.os }}-bun-${{ steps.setup-bun.outputs.bun-revision }}-${{ hashFiles('bun.lock') }} | |
| - name: Install dependencies | |
| run: bun install --frozen --ignore-scripts | |
| - name: Create Neon branch | |
| id: create-branch | |
| uses: neondatabase/create-branch-action@fb620d43d4c565abaf088b848a4e28e5c4ea4d9c # 6.3.1 | |
| with: | |
| project_id: ${{ vars.NEON_PROJECT_ID }} | |
| branch_name: ${{ github.head_ref }} | |
| api_key: ${{ secrets.NEON_API_KEY }} | |
| - name: Validate and push database schema | |
| working-directory: packages/db | |
| env: | |
| DATABASE_URL: ${{ steps.create-branch.outputs.db_url_pooled }} | |
| DATABASE_URL_UNPOOLED: ${{ steps.create-branch.outputs.db_url }} | |
| run: | | |
| bun drizzle-kit check | |
| bun drizzle-kit migrate | |
| - name: Save database success status | |
| run: | | |
| cat > database-status.env << EOF | |
| DATABASE_STATUS="✅" | |
| DATABASE_LINK="<a href=\"https://console.neon.tech/app/projects/${{ vars.NEON_PROJECT_ID }}/branches/${{ steps.create-branch.outputs.branch_id }}/tables\">View Branch</a>" | |
| DATABASE_URL="${{ steps.create-branch.outputs.db_url_pooled }}" | |
| DATABASE_URL_UNPOOLED="${{ steps.create-branch.outputs.db_url }}" | |
| BRANCH_ID="${{ steps.create-branch.outputs.branch_id }}" | |
| EOF | |
| - name: Upload database status | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: database-status | |
| path: database-status.env | |
| deploy-api: | |
| name: Deploy API | |
| runs-on: ubuntu-latest | |
| environment: preview | |
| needs: deploy-database | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 | |
| - name: Setup Bun | |
| id: setup-bun | |
| uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 | |
| with: | |
| bun-version-file: .bun-version | |
| - name: Download database info | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 | |
| with: | |
| name: database-status | |
| - name: Load database URL | |
| run: | | |
| source database-status.env | |
| echo "DATABASE_URL=$DATABASE_URL" >> $GITHUB_ENV | |
| echo "DATABASE_URL_UNPOOLED=$DATABASE_URL_UNPOOLED" >> $GITHUB_ENV | |
| - name: Cache dependencies | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 | |
| with: | |
| path: ~/.bun/install/cache | |
| key: ${{ runner.os }}-bun-${{ steps.setup-bun.outputs.bun-revision }}-${{ hashFiles('bun.lock') }} | |
| - name: Install dependencies | |
| run: bun install --frozen --ignore-scripts | |
| - name: Install Vercel CLI | |
| run: npm install --global vercel@$VERCEL_CLI_VERSION | |
| - name: Build and Deploy API | |
| id: deploy | |
| env: | |
| VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} | |
| VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} | |
| VERCEL_PROJECT_ID: ${{ secrets.VERCEL_API_PROJECT_ID }} | |
| DATABASE_URL: ${{ env.DATABASE_URL }} | |
| DATABASE_URL_UNPOOLED: ${{ env.DATABASE_URL_UNPOOLED }} | |
| BLOB_READ_WRITE_TOKEN: ${{ secrets.BLOB_READ_WRITE_TOKEN }} | |
| NEXT_PUBLIC_API_URL: https://${{ env.API_ALIAS }} | |
| NEXT_PUBLIC_WEB_URL: https://${{ env.WEB_ALIAS }} | |
| NEXT_PUBLIC_MARKETING_URL: https://${{ env.MARKETING_ALIAS }} | |
| NEXT_PUBLIC_ADMIN_URL: https://${{ env.ADMIN_ALIAS }} | |
| NEXT_PUBLIC_COOKIE_DOMAIN: ${{ secrets.NEXT_PUBLIC_COOKIE_DOMAIN }} | |
| BETTER_AUTH_SECRET: ${{ secrets.BETTER_AUTH_SECRET }} | |
| GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }} | |
| GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET }} | |
| GH_CLIENT_ID: ${{ secrets.GH_CLIENT_ID }} | |
| GH_CLIENT_SECRET: ${{ secrets.GH_CLIENT_SECRET }} | |
| NEXT_PUBLIC_SENTRY_DSN_API: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN_API }} | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| NEXT_PUBLIC_SENTRY_ENVIRONMENT: ${{ vars.NEXT_PUBLIC_SENTRY_ENVIRONMENT }} | |
| NEXT_PUBLIC_POSTHOG_KEY: ${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }} | |
| NEXT_PUBLIC_POSTHOG_HOST: ${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }} | |
| POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY }} | |
| POSTHOG_PROJECT_ID: ${{ secrets.POSTHOG_PROJECT_ID }} | |
| KV_REST_API_URL: ${{ secrets.KV_REST_API_URL }} | |
| KV_REST_API_TOKEN: ${{ secrets.KV_REST_API_TOKEN }} | |
| KV_URL: ${{ secrets.KV_URL }} | |
| RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }} | |
| LINEAR_CLIENT_ID: ${{ secrets.LINEAR_CLIENT_ID }} | |
| LINEAR_CLIENT_SECRET: ${{ secrets.LINEAR_CLIENT_SECRET }} | |
| LINEAR_WEBHOOK_SECRET: ${{ secrets.LINEAR_WEBHOOK_SECRET }} | |
| SLACK_CLIENT_ID: ${{ secrets.SLACK_CLIENT_ID }} | |
| SLACK_CLIENT_SECRET: ${{ secrets.SLACK_CLIENT_SECRET }} | |
| SLACK_SIGNING_SECRET: ${{ secrets.SLACK_SIGNING_SECRET }} | |
| ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} | |
| GH_APP_ID: ${{ secrets.GH_APP_ID }} | |
| GH_APP_PRIVATE_KEY: ${{ secrets.GH_APP_PRIVATE_KEY }} | |
| GH_WEBHOOK_SECRET: ${{ secrets.GH_WEBHOOK_SECRET }} | |
| HOOKDECK_SIGNING_SECRET: ${{ secrets.HOOKDECK_SIGNING_SECRET }} | |
| QSTASH_TOKEN: ${{ secrets.QSTASH_TOKEN }} | |
| QSTASH_URL: ${{ secrets.QSTASH_URL }} | |
| QSTASH_CURRENT_SIGNING_KEY: ${{ secrets.QSTASH_CURRENT_SIGNING_KEY }} | |
| QSTASH_NEXT_SIGNING_KEY: ${{ secrets.QSTASH_NEXT_SIGNING_KEY }} | |
| STRIPE_SECRET_KEY: ${{ secrets.STRIPE_SECRET_KEY }} | |
| STRIPE_WEBHOOK_SECRET: ${{ secrets.STRIPE_WEBHOOK_SECRET }} | |
| STRIPE_PRO_MONTHLY_PRICE_ID: ${{ secrets.STRIPE_PRO_MONTHLY_PRICE_ID }} | |
| STRIPE_PRO_YEARLY_PRICE_ID: ${{ secrets.STRIPE_PRO_YEARLY_PRICE_ID }} | |
| STRIPE_ENTERPRISE_YEARLY_PRICE_ID: ${{ secrets.STRIPE_ENTERPRISE_YEARLY_PRICE_ID }} | |
| SLACK_BILLING_WEBHOOK_URL: ${{ secrets.SLACK_BILLING_WEBHOOK_URL }} | |
| SECRETS_ENCRYPTION_KEY: ${{ secrets.SECRETS_ENCRYPTION_KEY }} | |
| RELAY_URL: ${{ secrets.RELAY_URL }} | |
| BLAXEL_API_KEY: ${{ secrets.BLAXEL_API_KEY }} | |
| BLAXEL_WORKSPACE: ${{ secrets.BLAXEL_WORKSPACE }} | |
| BLAXEL_REGION: ${{ vars.BLAXEL_REGION }} | |
| BLAXEL_SANDBOX_IMAGE: ${{ vars.BLAXEL_SANDBOX_IMAGE }} | |
| OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| GH_APP_SLUG: ${{ vars.GH_APP_SLUG }} | |
| run: | | |
| vercel pull --yes --environment=preview --token=$VERCEL_TOKEN | |
| vercel build --token=$VERCEL_TOKEN | |
| VERCEL_URL=$(vercel deploy --prebuilt --archive=tgz --token=$VERCEL_TOKEN \ | |
| --env DATABASE_URL=$DATABASE_URL \ | |
| --env DATABASE_URL_UNPOOLED=$DATABASE_URL_UNPOOLED \ | |
| --env BLOB_READ_WRITE_TOKEN=$BLOB_READ_WRITE_TOKEN \ | |
| --env NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL \ | |
| --env NEXT_PUBLIC_WEB_URL=$NEXT_PUBLIC_WEB_URL \ | |
| --env NEXT_PUBLIC_MARKETING_URL=$NEXT_PUBLIC_MARKETING_URL \ | |
| --env NEXT_PUBLIC_ADMIN_URL=$NEXT_PUBLIC_ADMIN_URL \ | |
| --env NEXT_PUBLIC_COOKIE_DOMAIN=$NEXT_PUBLIC_COOKIE_DOMAIN \ | |
| --env BETTER_AUTH_SECRET=$BETTER_AUTH_SECRET \ | |
| --env GOOGLE_CLIENT_ID=$GOOGLE_CLIENT_ID \ | |
| --env GOOGLE_CLIENT_SECRET=$GOOGLE_CLIENT_SECRET \ | |
| --env GH_CLIENT_ID=$GH_CLIENT_ID \ | |
| --env GH_CLIENT_SECRET=$GH_CLIENT_SECRET \ | |
| --env NEXT_PUBLIC_SENTRY_DSN_API=$NEXT_PUBLIC_SENTRY_DSN_API \ | |
| --env NEXT_PUBLIC_SENTRY_ENVIRONMENT=$NEXT_PUBLIC_SENTRY_ENVIRONMENT \ | |
| --env NEXT_PUBLIC_POSTHOG_KEY=$NEXT_PUBLIC_POSTHOG_KEY \ | |
| --env NEXT_PUBLIC_POSTHOG_HOST=$NEXT_PUBLIC_POSTHOG_HOST \ | |
| --env POSTHOG_API_KEY=$POSTHOG_API_KEY \ | |
| --env POSTHOG_PROJECT_ID=$POSTHOG_PROJECT_ID \ | |
| --env KV_REST_API_URL=$KV_REST_API_URL \ | |
| --env KV_REST_API_TOKEN=$KV_REST_API_TOKEN \ | |
| --env KV_URL=$KV_URL \ | |
| --env RESEND_API_KEY=$RESEND_API_KEY \ | |
| --env LINEAR_CLIENT_ID=$LINEAR_CLIENT_ID \ | |
| --env LINEAR_CLIENT_SECRET=$LINEAR_CLIENT_SECRET \ | |
| --env LINEAR_WEBHOOK_SECRET=$LINEAR_WEBHOOK_SECRET \ | |
| --env SLACK_CLIENT_ID=$SLACK_CLIENT_ID \ | |
| --env SLACK_CLIENT_SECRET=$SLACK_CLIENT_SECRET \ | |
| --env SLACK_SIGNING_SECRET=$SLACK_SIGNING_SECRET \ | |
| --env ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \ | |
| --env GH_APP_ID="$GH_APP_ID" \ | |
| --env GH_APP_PRIVATE_KEY="$GH_APP_PRIVATE_KEY" \ | |
| --env GH_WEBHOOK_SECRET="$GH_WEBHOOK_SECRET" \ | |
| --env HOOKDECK_SIGNING_SECRET="$HOOKDECK_SIGNING_SECRET" \ | |
| --env QSTASH_TOKEN=$QSTASH_TOKEN \ | |
| --env QSTASH_URL=$QSTASH_URL \ | |
| --env QSTASH_CURRENT_SIGNING_KEY=$QSTASH_CURRENT_SIGNING_KEY \ | |
| --env QSTASH_NEXT_SIGNING_KEY=$QSTASH_NEXT_SIGNING_KEY \ | |
| --env STRIPE_SECRET_KEY=$STRIPE_SECRET_KEY \ | |
| --env STRIPE_WEBHOOK_SECRET=$STRIPE_WEBHOOK_SECRET \ | |
| --env STRIPE_PRO_MONTHLY_PRICE_ID=$STRIPE_PRO_MONTHLY_PRICE_ID \ | |
| --env STRIPE_PRO_YEARLY_PRICE_ID=$STRIPE_PRO_YEARLY_PRICE_ID \ | |
| --env STRIPE_ENTERPRISE_YEARLY_PRICE_ID=$STRIPE_ENTERPRISE_YEARLY_PRICE_ID \ | |
| --env SLACK_BILLING_WEBHOOK_URL=$SLACK_BILLING_WEBHOOK_URL \ | |
| --env SECRETS_ENCRYPTION_KEY=$SECRETS_ENCRYPTION_KEY \ | |
| --env RELAY_URL=$RELAY_URL \ | |
| --env BLAXEL_API_KEY=$BLAXEL_API_KEY \ | |
| --env BLAXEL_WORKSPACE=$BLAXEL_WORKSPACE \ | |
| --env BLAXEL_REGION=$BLAXEL_REGION \ | |
| --env BLAXEL_SANDBOX_IMAGE=$BLAXEL_SANDBOX_IMAGE \ | |
| --env OPENAI_API_KEY=$OPENAI_API_KEY \ | |
| --env GH_APP_SLUG=$GH_APP_SLUG) | |
| vercel alias $VERCEL_URL ${{ env.API_ALIAS }} --scope=$VERCEL_ORG_ID --token=$VERCEL_TOKEN | |
| echo "vercel_url=$VERCEL_URL" >> $GITHUB_OUTPUT | |
| - name: Save API success status | |
| run: | | |
| cat > api-status.env << EOF | |
| API_STATUS="✅" | |
| API_LINK="<a href=\"https://${{ env.API_ALIAS }}\">Open Preview</a>" | |
| API_URL="https://${{ env.API_ALIAS }}" | |
| EOF | |
| - name: Upload API status | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: api-status | |
| path: api-status.env | |
| deploy-web: | |
| name: Deploy Web | |
| runs-on: ubuntu-latest | |
| environment: | |
| name: preview | |
| url: https://${{ env.WEB_ALIAS }} | |
| needs: deploy-database | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 | |
| - name: Setup Bun | |
| id: setup-bun | |
| uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 | |
| with: | |
| bun-version-file: .bun-version | |
| - name: Cache dependencies | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 | |
| with: | |
| path: ~/.bun/install/cache | |
| key: ${{ runner.os }}-bun-${{ steps.setup-bun.outputs.bun-revision }}-${{ hashFiles('bun.lock') }} | |
| - name: Download database info | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 | |
| with: | |
| name: database-status | |
| - name: Load database URL | |
| run: | | |
| source database-status.env | |
| echo "DATABASE_URL=$DATABASE_URL" >> $GITHUB_ENV | |
| echo "DATABASE_URL_UNPOOLED=$DATABASE_URL_UNPOOLED" >> $GITHUB_ENV | |
| - name: Install dependencies | |
| run: bun install --frozen --ignore-scripts | |
| - name: Install Vercel CLI | |
| run: npm install --global vercel@$VERCEL_CLI_VERSION | |
| - name: Build and Deploy Web | |
| id: deploy | |
| env: | |
| VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} | |
| VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} | |
| VERCEL_PROJECT_ID: ${{ secrets.VERCEL_WEB_PROJECT_ID }} | |
| DATABASE_URL: ${{ env.DATABASE_URL }} | |
| DATABASE_URL_UNPOOLED: ${{ env.DATABASE_URL_UNPOOLED }} | |
| NEXT_PUBLIC_API_URL: https://${{ env.API_ALIAS }} | |
| NEXT_PUBLIC_WEB_URL: https://${{ env.WEB_ALIAS }} | |
| NEXT_PUBLIC_MARKETING_URL: https://${{ env.MARKETING_ALIAS }} | |
| NEXT_PUBLIC_ADMIN_URL: https://${{ env.ADMIN_ALIAS }} | |
| NEXT_PUBLIC_DOCS_URL: https://${{ env.DOCS_ALIAS }} | |
| NEXT_PUBLIC_RELAY_URL: ${{ secrets.RELAY_URL }} | |
| BETTER_AUTH_SECRET: ${{ secrets.BETTER_AUTH_SECRET }} | |
| NEXT_PUBLIC_COOKIE_DOMAIN: ${{ secrets.NEXT_PUBLIC_COOKIE_DOMAIN }} | |
| NEXT_PUBLIC_POSTHOG_KEY: ${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }} | |
| NEXT_PUBLIC_POSTHOG_HOST: ${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }} | |
| NEXT_PUBLIC_SENTRY_DSN_WEB: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN_WEB }} | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| NEXT_PUBLIC_SENTRY_ENVIRONMENT: ${{ vars.NEXT_PUBLIC_SENTRY_ENVIRONMENT }} | |
| KV_REST_API_URL: ${{ secrets.KV_REST_API_URL }} | |
| KV_REST_API_TOKEN: ${{ secrets.KV_REST_API_TOKEN }} | |
| KV_URL: ${{ secrets.KV_URL }} | |
| RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }} | |
| STRIPE_SECRET_KEY: ${{ secrets.STRIPE_SECRET_KEY }} | |
| STRIPE_WEBHOOK_SECRET: ${{ secrets.STRIPE_WEBHOOK_SECRET }} | |
| STRIPE_PRO_MONTHLY_PRICE_ID: ${{ secrets.STRIPE_PRO_MONTHLY_PRICE_ID }} | |
| STRIPE_PRO_YEARLY_PRICE_ID: ${{ secrets.STRIPE_PRO_YEARLY_PRICE_ID }} | |
| STRIPE_ENTERPRISE_YEARLY_PRICE_ID: ${{ secrets.STRIPE_ENTERPRISE_YEARLY_PRICE_ID }} | |
| SLACK_BILLING_WEBHOOK_URL: ${{ secrets.SLACK_BILLING_WEBHOOK_URL }} | |
| SECRETS_ENCRYPTION_KEY: ${{ secrets.SECRETS_ENCRYPTION_KEY }} | |
| ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} | |
| RELAY_URL: ${{ secrets.RELAY_URL }} | |
| run: | | |
| vercel pull --yes --environment=preview --token=$VERCEL_TOKEN | |
| vercel build --token=$VERCEL_TOKEN | |
| VERCEL_URL=$(vercel deploy --prebuilt --archive=tgz --token=$VERCEL_TOKEN \ | |
| --env DATABASE_URL=$DATABASE_URL \ | |
| --env DATABASE_URL_UNPOOLED=$DATABASE_URL_UNPOOLED \ | |
| --env BETTER_AUTH_SECRET=$BETTER_AUTH_SECRET \ | |
| --env NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL \ | |
| --env NEXT_PUBLIC_WEB_URL=$NEXT_PUBLIC_WEB_URL \ | |
| --env NEXT_PUBLIC_MARKETING_URL=$NEXT_PUBLIC_MARKETING_URL \ | |
| --env NEXT_PUBLIC_ADMIN_URL=$NEXT_PUBLIC_ADMIN_URL \ | |
| --env NEXT_PUBLIC_DOCS_URL=$NEXT_PUBLIC_DOCS_URL \ | |
| --env NEXT_PUBLIC_RELAY_URL=$NEXT_PUBLIC_RELAY_URL \ | |
| --env NEXT_PUBLIC_COOKIE_DOMAIN=$NEXT_PUBLIC_COOKIE_DOMAIN \ | |
| --env NEXT_PUBLIC_POSTHOG_KEY=$NEXT_PUBLIC_POSTHOG_KEY \ | |
| --env NEXT_PUBLIC_POSTHOG_HOST=$NEXT_PUBLIC_POSTHOG_HOST \ | |
| --env NEXT_PUBLIC_SENTRY_DSN_WEB=$NEXT_PUBLIC_SENTRY_DSN_WEB \ | |
| --env NEXT_PUBLIC_SENTRY_ENVIRONMENT=$NEXT_PUBLIC_SENTRY_ENVIRONMENT \ | |
| --env KV_REST_API_URL=$KV_REST_API_URL \ | |
| --env KV_REST_API_TOKEN=$KV_REST_API_TOKEN \ | |
| --env KV_URL=$KV_URL \ | |
| --env RESEND_API_KEY=$RESEND_API_KEY \ | |
| --env STRIPE_SECRET_KEY=$STRIPE_SECRET_KEY \ | |
| --env STRIPE_WEBHOOK_SECRET=$STRIPE_WEBHOOK_SECRET \ | |
| --env STRIPE_PRO_MONTHLY_PRICE_ID=$STRIPE_PRO_MONTHLY_PRICE_ID \ | |
| --env STRIPE_PRO_YEARLY_PRICE_ID=$STRIPE_PRO_YEARLY_PRICE_ID \ | |
| --env STRIPE_ENTERPRISE_YEARLY_PRICE_ID=$STRIPE_ENTERPRISE_YEARLY_PRICE_ID \ | |
| --env SLACK_BILLING_WEBHOOK_URL=$SLACK_BILLING_WEBHOOK_URL \ | |
| --env SECRETS_ENCRYPTION_KEY=$SECRETS_ENCRYPTION_KEY \ | |
| --env ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY) | |
| vercel alias $VERCEL_URL ${{ env.WEB_ALIAS }} --scope=$VERCEL_ORG_ID --token=$VERCEL_TOKEN | |
| echo "vercel_url=$VERCEL_URL" >> $GITHUB_OUTPUT | |
| - name: Save web success status | |
| run: | | |
| cat > web-status.env << EOF | |
| WEB_STATUS="✅" | |
| WEB_LINK="<a href=\"https://${{ env.WEB_ALIAS }}\">Open Preview</a>" | |
| EOF | |
| - name: Upload web status | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: web-status | |
| path: web-status.env | |
| deploy-marketing: | |
| name: Deploy Marketing | |
| runs-on: ubuntu-latest | |
| environment: preview | |
| needs: deploy-database | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 | |
| - name: Setup Bun | |
| id: setup-bun | |
| uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 | |
| with: | |
| bun-version-file: .bun-version | |
| - name: Download database info | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 | |
| with: | |
| name: database-status | |
| - name: Load database URL | |
| run: | | |
| source database-status.env | |
| echo "DATABASE_URL=$DATABASE_URL" >> $GITHUB_ENV | |
| echo "DATABASE_URL_UNPOOLED=$DATABASE_URL_UNPOOLED" >> $GITHUB_ENV | |
| - name: Cache dependencies | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 | |
| with: | |
| path: ~/.bun/install/cache | |
| key: ${{ runner.os }}-bun-${{ steps.setup-bun.outputs.bun-revision }}-${{ hashFiles('bun.lock') }} | |
| - name: Install dependencies | |
| run: bun install --frozen --ignore-scripts | |
| - name: Install Vercel CLI | |
| run: npm install --global vercel@$VERCEL_CLI_VERSION | |
| - name: Build and Deploy Marketing | |
| id: deploy | |
| env: | |
| VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} | |
| VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} | |
| VERCEL_PROJECT_ID: ${{ secrets.VERCEL_MARKETING_PROJECT_ID }} | |
| DATABASE_URL: ${{ env.DATABASE_URL }} | |
| DATABASE_URL_UNPOOLED: ${{ env.DATABASE_URL_UNPOOLED }} | |
| NEXT_PUBLIC_API_URL: https://${{ env.API_ALIAS }} | |
| NEXT_PUBLIC_WEB_URL: https://${{ env.WEB_ALIAS }} | |
| NEXT_PUBLIC_MARKETING_URL: https://${{ env.MARKETING_ALIAS }} | |
| NEXT_PUBLIC_ADMIN_URL: https://${{ env.ADMIN_ALIAS }} | |
| BETTER_AUTH_SECRET: ${{ secrets.BETTER_AUTH_SECRET }} | |
| NEXT_PUBLIC_COOKIE_DOMAIN: ${{ secrets.NEXT_PUBLIC_COOKIE_DOMAIN }} | |
| NEXT_PUBLIC_POSTHOG_KEY: ${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }} | |
| NEXT_PUBLIC_POSTHOG_HOST: ${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }} | |
| NEXT_PUBLIC_SENTRY_DSN_MARKETING: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN_MARKETING }} | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| NEXT_PUBLIC_SENTRY_ENVIRONMENT: ${{ vars.NEXT_PUBLIC_SENTRY_ENVIRONMENT }} | |
| KV_REST_API_URL: ${{ secrets.KV_REST_API_URL }} | |
| KV_REST_API_TOKEN: ${{ secrets.KV_REST_API_TOKEN }} | |
| KV_URL: ${{ secrets.KV_URL }} | |
| RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }} | |
| STRIPE_SECRET_KEY: ${{ secrets.STRIPE_SECRET_KEY }} | |
| STRIPE_WEBHOOK_SECRET: ${{ secrets.STRIPE_WEBHOOK_SECRET }} | |
| STRIPE_PRO_MONTHLY_PRICE_ID: ${{ secrets.STRIPE_PRO_MONTHLY_PRICE_ID }} | |
| STRIPE_PRO_YEARLY_PRICE_ID: ${{ secrets.STRIPE_PRO_YEARLY_PRICE_ID }} | |
| STRIPE_ENTERPRISE_YEARLY_PRICE_ID: ${{ secrets.STRIPE_ENTERPRISE_YEARLY_PRICE_ID }} | |
| SLACK_BILLING_WEBHOOK_URL: ${{ secrets.SLACK_BILLING_WEBHOOK_URL }} | |
| SECRETS_ENCRYPTION_KEY: ${{ secrets.SECRETS_ENCRYPTION_KEY }} | |
| ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} | |
| run: | | |
| vercel pull --yes --environment=preview --token=$VERCEL_TOKEN | |
| vercel build --token=$VERCEL_TOKEN | |
| VERCEL_URL=$(vercel deploy --prebuilt --archive=tgz --token=$VERCEL_TOKEN \ | |
| --env DATABASE_URL=$DATABASE_URL \ | |
| --env DATABASE_URL_UNPOOLED=$DATABASE_URL_UNPOOLED \ | |
| --env BETTER_AUTH_SECRET=$BETTER_AUTH_SECRET \ | |
| --env NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL \ | |
| --env NEXT_PUBLIC_WEB_URL=$NEXT_PUBLIC_WEB_URL \ | |
| --env NEXT_PUBLIC_MARKETING_URL=$NEXT_PUBLIC_MARKETING_URL \ | |
| --env NEXT_PUBLIC_ADMIN_URL=$NEXT_PUBLIC_ADMIN_URL \ | |
| --env NEXT_PUBLIC_COOKIE_DOMAIN=$NEXT_PUBLIC_COOKIE_DOMAIN \ | |
| --env NEXT_PUBLIC_POSTHOG_KEY=$NEXT_PUBLIC_POSTHOG_KEY \ | |
| --env NEXT_PUBLIC_POSTHOG_HOST=$NEXT_PUBLIC_POSTHOG_HOST \ | |
| --env NEXT_PUBLIC_SENTRY_DSN_MARKETING=$NEXT_PUBLIC_SENTRY_DSN_MARKETING \ | |
| --env NEXT_PUBLIC_SENTRY_ENVIRONMENT=$NEXT_PUBLIC_SENTRY_ENVIRONMENT \ | |
| --env KV_REST_API_URL=$KV_REST_API_URL \ | |
| --env KV_REST_API_TOKEN=$KV_REST_API_TOKEN \ | |
| --env KV_URL=$KV_URL \ | |
| --env RESEND_API_KEY=$RESEND_API_KEY \ | |
| --env STRIPE_SECRET_KEY=$STRIPE_SECRET_KEY \ | |
| --env STRIPE_WEBHOOK_SECRET=$STRIPE_WEBHOOK_SECRET \ | |
| --env STRIPE_PRO_MONTHLY_PRICE_ID=$STRIPE_PRO_MONTHLY_PRICE_ID \ | |
| --env STRIPE_PRO_YEARLY_PRICE_ID=$STRIPE_PRO_YEARLY_PRICE_ID \ | |
| --env STRIPE_ENTERPRISE_YEARLY_PRICE_ID=$STRIPE_ENTERPRISE_YEARLY_PRICE_ID \ | |
| --env SLACK_BILLING_WEBHOOK_URL=$SLACK_BILLING_WEBHOOK_URL \ | |
| --env SECRETS_ENCRYPTION_KEY=$SECRETS_ENCRYPTION_KEY \ | |
| --env ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY) | |
| vercel alias $VERCEL_URL ${{ env.MARKETING_ALIAS }} --scope=$VERCEL_ORG_ID --token=$VERCEL_TOKEN | |
| echo "vercel_url=$VERCEL_URL" >> $GITHUB_OUTPUT | |
| - name: Save marketing success status | |
| run: | | |
| cat > marketing-status.env << EOF | |
| MARKETING_STATUS="✅" | |
| MARKETING_LINK="<a href=\"https://${{ env.MARKETING_ALIAS }}\">Open Preview</a>" | |
| EOF | |
| - name: Upload marketing status | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: marketing-status | |
| path: marketing-status.env | |
| deploy-admin: | |
| name: Deploy Admin | |
| runs-on: ubuntu-latest | |
| environment: preview | |
| needs: deploy-database | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 | |
| - name: Setup Bun | |
| id: setup-bun | |
| uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 | |
| with: | |
| bun-version-file: .bun-version | |
| - name: Download database info | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 | |
| with: | |
| name: database-status | |
| - name: Load database URL | |
| run: | | |
| source database-status.env | |
| echo "DATABASE_URL=$DATABASE_URL" >> $GITHUB_ENV | |
| echo "DATABASE_URL_UNPOOLED=$DATABASE_URL_UNPOOLED" >> $GITHUB_ENV | |
| - name: Cache dependencies | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 | |
| with: | |
| path: ~/.bun/install/cache | |
| key: ${{ runner.os }}-bun-${{ steps.setup-bun.outputs.bun-revision }}-${{ hashFiles('bun.lock') }} | |
| - name: Install dependencies | |
| run: bun install --frozen --ignore-scripts | |
| - name: Install Vercel CLI | |
| run: npm install --global vercel@$VERCEL_CLI_VERSION | |
| - name: Build and Deploy Admin | |
| id: deploy | |
| env: | |
| VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} | |
| VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} | |
| VERCEL_PROJECT_ID: ${{ secrets.VERCEL_ADMIN_PROJECT_ID }} | |
| DATABASE_URL: ${{ env.DATABASE_URL }} | |
| DATABASE_URL_UNPOOLED: ${{ env.DATABASE_URL_UNPOOLED }} | |
| NEXT_PUBLIC_API_URL: https://${{ env.API_ALIAS }} | |
| NEXT_PUBLIC_WEB_URL: https://${{ env.WEB_ALIAS }} | |
| NEXT_PUBLIC_MARKETING_URL: https://${{ env.MARKETING_ALIAS }} | |
| NEXT_PUBLIC_ADMIN_URL: https://${{ env.ADMIN_ALIAS }} | |
| BETTER_AUTH_SECRET: ${{ secrets.BETTER_AUTH_SECRET }} | |
| NEXT_PUBLIC_COOKIE_DOMAIN: ${{ secrets.NEXT_PUBLIC_COOKIE_DOMAIN }} | |
| NEXT_PUBLIC_POSTHOG_KEY: ${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }} | |
| NEXT_PUBLIC_POSTHOG_HOST: ${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }} | |
| POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY }} | |
| POSTHOG_PROJECT_ID: ${{ secrets.POSTHOG_PROJECT_ID }} | |
| NEXT_PUBLIC_SENTRY_DSN_ADMIN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN_ADMIN }} | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| NEXT_PUBLIC_SENTRY_ENVIRONMENT: ${{ vars.NEXT_PUBLIC_SENTRY_ENVIRONMENT }} | |
| KV_REST_API_URL: ${{ secrets.KV_REST_API_URL }} | |
| KV_REST_API_TOKEN: ${{ secrets.KV_REST_API_TOKEN }} | |
| KV_URL: ${{ secrets.KV_URL }} | |
| RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }} | |
| STRIPE_SECRET_KEY: ${{ secrets.STRIPE_SECRET_KEY }} | |
| STRIPE_WEBHOOK_SECRET: ${{ secrets.STRIPE_WEBHOOK_SECRET }} | |
| STRIPE_PRO_MONTHLY_PRICE_ID: ${{ secrets.STRIPE_PRO_MONTHLY_PRICE_ID }} | |
| STRIPE_PRO_YEARLY_PRICE_ID: ${{ secrets.STRIPE_PRO_YEARLY_PRICE_ID }} | |
| STRIPE_ENTERPRISE_YEARLY_PRICE_ID: ${{ secrets.STRIPE_ENTERPRISE_YEARLY_PRICE_ID }} | |
| SLACK_BILLING_WEBHOOK_URL: ${{ secrets.SLACK_BILLING_WEBHOOK_URL }} | |
| SECRETS_ENCRYPTION_KEY: ${{ secrets.SECRETS_ENCRYPTION_KEY }} | |
| ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} | |
| run: | | |
| vercel pull --yes --environment=preview --token=$VERCEL_TOKEN | |
| vercel build --token=$VERCEL_TOKEN | |
| VERCEL_URL=$(vercel deploy --prebuilt --archive=tgz --token=$VERCEL_TOKEN \ | |
| --env DATABASE_URL=$DATABASE_URL \ | |
| --env DATABASE_URL_UNPOOLED=$DATABASE_URL_UNPOOLED \ | |
| --env BETTER_AUTH_SECRET=$BETTER_AUTH_SECRET \ | |
| --env NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL \ | |
| --env NEXT_PUBLIC_WEB_URL=$NEXT_PUBLIC_WEB_URL \ | |
| --env NEXT_PUBLIC_MARKETING_URL=$NEXT_PUBLIC_MARKETING_URL \ | |
| --env NEXT_PUBLIC_ADMIN_URL=$NEXT_PUBLIC_ADMIN_URL \ | |
| --env NEXT_PUBLIC_COOKIE_DOMAIN=$NEXT_PUBLIC_COOKIE_DOMAIN \ | |
| --env NEXT_PUBLIC_POSTHOG_KEY=$NEXT_PUBLIC_POSTHOG_KEY \ | |
| --env NEXT_PUBLIC_POSTHOG_HOST=$NEXT_PUBLIC_POSTHOG_HOST \ | |
| --env POSTHOG_API_KEY=$POSTHOG_API_KEY \ | |
| --env POSTHOG_PROJECT_ID=$POSTHOG_PROJECT_ID \ | |
| --env NEXT_PUBLIC_SENTRY_DSN_ADMIN=$NEXT_PUBLIC_SENTRY_DSN_ADMIN \ | |
| --env NEXT_PUBLIC_SENTRY_ENVIRONMENT=$NEXT_PUBLIC_SENTRY_ENVIRONMENT \ | |
| --env KV_REST_API_URL=$KV_REST_API_URL \ | |
| --env KV_REST_API_TOKEN=$KV_REST_API_TOKEN \ | |
| --env KV_URL=$KV_URL \ | |
| --env RESEND_API_KEY=$RESEND_API_KEY \ | |
| --env STRIPE_SECRET_KEY=$STRIPE_SECRET_KEY \ | |
| --env STRIPE_WEBHOOK_SECRET=$STRIPE_WEBHOOK_SECRET \ | |
| --env STRIPE_PRO_MONTHLY_PRICE_ID=$STRIPE_PRO_MONTHLY_PRICE_ID \ | |
| --env STRIPE_PRO_YEARLY_PRICE_ID=$STRIPE_PRO_YEARLY_PRICE_ID \ | |
| --env STRIPE_ENTERPRISE_YEARLY_PRICE_ID=$STRIPE_ENTERPRISE_YEARLY_PRICE_ID \ | |
| --env SLACK_BILLING_WEBHOOK_URL=$SLACK_BILLING_WEBHOOK_URL \ | |
| --env SECRETS_ENCRYPTION_KEY=$SECRETS_ENCRYPTION_KEY \ | |
| --env ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY) | |
| vercel alias $VERCEL_URL ${{ env.ADMIN_ALIAS }} --scope=$VERCEL_ORG_ID --token=$VERCEL_TOKEN | |
| echo "vercel_url=$VERCEL_URL" >> $GITHUB_OUTPUT | |
| - name: Save admin success status | |
| run: | | |
| cat > admin-status.env << EOF | |
| ADMIN_STATUS="✅" | |
| ADMIN_LINK="<a href=\"https://${{ env.ADMIN_ALIAS }}\">Open Preview</a>" | |
| EOF | |
| - name: Upload admin status | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: admin-status | |
| path: admin-status.env | |
| deploy-docs: | |
| name: Deploy Docs | |
| runs-on: ubuntu-latest | |
| environment: preview | |
| needs: deploy-database | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 | |
| - name: Setup Bun | |
| id: setup-bun | |
| uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 | |
| with: | |
| bun-version-file: .bun-version | |
| - name: Download database info | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 | |
| with: | |
| name: database-status | |
| - name: Load database URL | |
| run: | | |
| source database-status.env | |
| echo "DATABASE_URL=$DATABASE_URL" >> $GITHUB_ENV | |
| echo "DATABASE_URL_UNPOOLED=$DATABASE_URL_UNPOOLED" >> $GITHUB_ENV | |
| - name: Cache dependencies | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 | |
| with: | |
| path: ~/.bun/install/cache | |
| key: ${{ runner.os }}-bun-${{ steps.setup-bun.outputs.bun-revision }}-${{ hashFiles('bun.lock') }} | |
| - name: Install dependencies | |
| run: bun install --frozen --ignore-scripts | |
| - name: Install Vercel CLI | |
| run: npm install --global vercel@$VERCEL_CLI_VERSION | |
| - name: Build and Deploy Docs | |
| id: deploy | |
| env: | |
| VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} | |
| VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} | |
| VERCEL_PROJECT_ID: ${{ secrets.VERCEL_DOCS_PROJECT_ID }} | |
| DATABASE_URL: ${{ env.DATABASE_URL }} | |
| DATABASE_URL_UNPOOLED: ${{ env.DATABASE_URL_UNPOOLED }} | |
| NEXT_PUBLIC_API_URL: https://${{ env.API_ALIAS }} | |
| NEXT_PUBLIC_WEB_URL: https://${{ env.WEB_ALIAS }} | |
| NEXT_PUBLIC_MARKETING_URL: https://${{ env.MARKETING_ALIAS }} | |
| NEXT_PUBLIC_POSTHOG_KEY: ${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }} | |
| NEXT_PUBLIC_POSTHOG_HOST: ${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }} | |
| NEXT_PUBLIC_SENTRY_DSN_DOCS: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN_DOCS }} | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| NEXT_PUBLIC_SENTRY_ENVIRONMENT: ${{ vars.NEXT_PUBLIC_SENTRY_ENVIRONMENT }} | |
| SECRETS_ENCRYPTION_KEY: ${{ secrets.SECRETS_ENCRYPTION_KEY }} | |
| run: | | |
| vercel pull --yes --environment=preview --token=$VERCEL_TOKEN | |
| vercel build --token=$VERCEL_TOKEN | |
| VERCEL_URL=$(vercel deploy --prebuilt --archive=tgz --token=$VERCEL_TOKEN \ | |
| --env DATABASE_URL=$DATABASE_URL \ | |
| --env DATABASE_URL_UNPOOLED=$DATABASE_URL_UNPOOLED \ | |
| --env NEXT_PUBLIC_POSTHOG_KEY=$NEXT_PUBLIC_POSTHOG_KEY \ | |
| --env NEXT_PUBLIC_POSTHOG_HOST=$NEXT_PUBLIC_POSTHOG_HOST \ | |
| --env NEXT_PUBLIC_SENTRY_DSN_DOCS=$NEXT_PUBLIC_SENTRY_DSN_DOCS \ | |
| --env NEXT_PUBLIC_SENTRY_ENVIRONMENT=$NEXT_PUBLIC_SENTRY_ENVIRONMENT \ | |
| --env SECRETS_ENCRYPTION_KEY=$SECRETS_ENCRYPTION_KEY) | |
| vercel alias $VERCEL_URL ${{ env.DOCS_ALIAS }} --scope=$VERCEL_ORG_ID --token=$VERCEL_TOKEN | |
| echo "vercel_url=$VERCEL_URL" >> $GITHUB_OUTPUT | |
| - name: Save docs success status | |
| run: | | |
| cat > docs-status.env << EOF | |
| DOCS_STATUS="✅" | |
| DOCS_LINK="<a href=\"https://${{ env.DOCS_ALIAS }}\">Open Preview</a>" | |
| EOF | |
| - name: Upload docs status | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: docs-status | |
| path: docs-status.env | |
| post-final-comment: | |
| name: Post Deployment Comment | |
| runs-on: ubuntu-latest | |
| if: always() | |
| needs: [deploy-database, deploy-api, deploy-web, deploy-marketing, deploy-admin, deploy-docs] | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 | |
| - name: Download all status artifacts | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 | |
| with: | |
| pattern: "*-status" | |
| merge-multiple: true | |
| - name: Generate deployment comment | |
| run: | | |
| DATABASE_STATUS="❌" | |
| DATABASE_LINK="Failed to create" | |
| API_STATUS="❌" | |
| API_LINK="Failed to deploy" | |
| WEB_STATUS="❌" | |
| WEB_LINK="Failed to deploy" | |
| MARKETING_STATUS="❌" | |
| MARKETING_LINK="Failed to deploy" | |
| ADMIN_STATUS="❌" | |
| ADMIN_LINK="Failed to deploy" | |
| DOCS_STATUS="❌" | |
| DOCS_LINK="Failed to deploy" | |
| if [[ "${{ needs.deploy-database.result }}" == "success" ]]; then | |
| source database-status.env | |
| fi | |
| if [[ "${{ needs.deploy-api.result }}" == "success" ]]; then | |
| source api-status.env | |
| fi | |
| if [[ "${{ needs.deploy-web.result }}" == "success" ]]; then | |
| source web-status.env | |
| fi | |
| if [[ "${{ needs.deploy-marketing.result }}" == "success" ]]; then | |
| source marketing-status.env | |
| fi | |
| if [[ "${{ needs.deploy-admin.result }}" == "success" ]]; then | |
| source admin-status.env | |
| fi | |
| if [[ "${{ needs.deploy-docs.result }}" == "success" ]]; then | |
| source docs-status.env | |
| fi | |
| export DATABASE_STATUS DATABASE_LINK API_STATUS API_LINK WEB_STATUS WEB_LINK MARKETING_STATUS MARKETING_LINK ADMIN_STATUS ADMIN_LINK DOCS_STATUS DOCS_LINK | |
| envsubst < .github/templates/preview-comment.md > final-comment.md | |
| - name: Post final deployment comment | |
| uses: thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b # v3.0.1 | |
| with: | |
| file-path: final-comment.md | |
| comment-tag: "🚀-preview-deployment" |