diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 5150cddf0..34800c7b5 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -28,26 +28,20 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile - - name: Deploy Sanity Studio - run: npx sanity deploy -y - working-directory: apps/sanity - env: - SANITY_AUTH_TOKEN: ${{ secrets.SANITY_AUTH_TOKEN }} - SANITY_STUDIO_HOSTNAME: ${{ vars.SANITY_STUDIO_HOSTNAME }} - SANITY_STUDIO_DATASET: ${{ vars.SANITY_STUDIO_DATASET }} - SANITY_STUDIO_PROJECT_ID: ${{ vars.SANITY_STUDIO_PROJECT_ID }} - - - name: Deploy Sanity Blueprints - continue-on-error: true + - name: Deploy Sanity via Blueprints (Studio & Functions) run: | + npx sanity blueprints promote --project-id ${{ vars.SANITY_STUDIO_PROJECT_ID }} --stack ${{ vars.SANITY_STUDIO_DATASET }} --force || true + npx sanity blueprints deploy --stack ${{ vars.SANITY_STUDIO_DATASET }} || \ npx sanity blueprints deploy --project-id ${{ vars.SANITY_STUDIO_PROJECT_ID }} --stack ${{ vars.SANITY_STUDIO_DATASET }} || \ - npx sanity blueprints init . --blueprint-type ts --project-id ${{ vars.SANITY_STUDIO_PROJECT_ID }} --stack-name ${{ vars.SANITY_STUDIO_DATASET }} || true + npx sanity deploy -y working-directory: apps/sanity env: SANITY_AUTH_TOKEN: ${{ secrets.SANITY_AUTH_TOKEN }} SANITY_PROJECT_ID: ${{ vars.SANITY_STUDIO_PROJECT_ID }} SANITY_STUDIO_PROJECT_ID: ${{ vars.SANITY_STUDIO_PROJECT_ID }} SANITY_STUDIO_DATASET: ${{ vars.SANITY_STUDIO_DATASET }} + SANITY_STUDIO_HOSTNAME: ${{ vars.SANITY_STUDIO_HOSTNAME }} + YOUTUBE_API_KEY: ${{ secrets.YOUTUBE_API_KEY }} deploy-production: if: github.ref == 'refs/heads/main' @@ -67,24 +61,18 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile - - name: Deploy Sanity Studio - run: npx sanity deploy -y - working-directory: apps/sanity - env: - SANITY_AUTH_TOKEN: ${{ secrets.SANITY_AUTH_TOKEN }} - SANITY_STUDIO_HOSTNAME: ${{ vars.SANITY_STUDIO_HOSTNAME }} - SANITY_STUDIO_DATASET: ${{ vars.SANITY_STUDIO_DATASET }} - SANITY_STUDIO_PROJECT_ID: ${{ vars.SANITY_STUDIO_PROJECT_ID }} - - - name: Deploy Sanity Blueprints - continue-on-error: true + - name: Deploy Sanity via Blueprints (Studio & Functions) run: | + npx sanity blueprints promote --project-id ${{ vars.SANITY_STUDIO_PROJECT_ID }} --stack ${{ vars.SANITY_STUDIO_DATASET }} --force || true + npx sanity blueprints deploy --stack ${{ vars.SANITY_STUDIO_DATASET }} || \ npx sanity blueprints deploy --project-id ${{ vars.SANITY_STUDIO_PROJECT_ID }} --stack ${{ vars.SANITY_STUDIO_DATASET }} || \ - npx sanity blueprints init . --blueprint-type ts --project-id ${{ vars.SANITY_STUDIO_PROJECT_ID }} --stack-name ${{ vars.SANITY_STUDIO_DATASET }} || true + npx sanity deploy -y working-directory: apps/sanity env: SANITY_AUTH_TOKEN: ${{ secrets.SANITY_AUTH_TOKEN }} SANITY_PROJECT_ID: ${{ vars.SANITY_STUDIO_PROJECT_ID }} SANITY_STUDIO_PROJECT_ID: ${{ vars.SANITY_STUDIO_PROJECT_ID }} SANITY_STUDIO_DATASET: ${{ vars.SANITY_STUDIO_DATASET }} + SANITY_STUDIO_HOSTNAME: ${{ vars.SANITY_STUDIO_HOSTNAME }} + YOUTUBE_API_KEY: ${{ secrets.YOUTUBE_API_KEY }} diff --git a/apps/sanity/sanity.blueprint.ts b/apps/sanity/sanity.blueprint.ts index 7c5f54828..43c7eedc1 100644 --- a/apps/sanity/sanity.blueprint.ts +++ b/apps/sanity/sanity.blueprint.ts @@ -2,10 +2,20 @@ import { defineBlueprint, defineDocumentFunction, defineScheduledFunction, + defineStudio, } from "@sanity/blueprints"; export default defineBlueprint({ resources: [ + defineStudio({ + name: "studio", + title: "CodingCatDev Studio", + root: ".", + slug: process.env.SANITY_STUDIO_HOSTNAME || "codingcat-prod", + autoUpdates: { + enabled: true, + }, + }), defineDocumentFunction({ name: "syndicate-content", displayName: "Syndicate Content (Dev.to & Hashnode)", diff --git a/apps/sanity/sanity.cli.ts b/apps/sanity/sanity.cli.ts index 61bd16a67..661e7fd99 100644 --- a/apps/sanity/sanity.cli.ts +++ b/apps/sanity/sanity.cli.ts @@ -7,6 +7,12 @@ export default defineCliConfig({ }, // Set via SANITY_STUDIO_HOSTNAME in CI: e.g. "codingcat.dev" (prod), "codingcat-dev" (dev) studioHost: process.env.SANITY_STUDIO_HOSTNAME, + deployment: { + appId: + process.env.SANITY_STUDIO_DATASET === "dev" + ? "v3ekp24b18rznov8t8r8p8v7" + : "kkqlvww6axzooqsa23pm0075", + }, typegen: { // Queries must live in .ts files — TypeGen cannot parse .astro frontmatter, // so defineQuery calls inside .astro are silently skipped.