Skip to content

feat(mcp): proxy Sanity Context MCP, add Workers AI chat agent & inte… #76

feat(mcp): proxy Sanity Context MCP, add Workers AI chat agent & inte…

feat(mcp): proxy Sanity Context MCP, add Workers AI chat agent & inte… #76

Workflow file for this run

name: Deploy Sanity Studio
on:
workflow_dispatch:
push:
branches: [dev, main]
paths:
- "apps/sanity/**"
- "sanity.blueprint.ts"
- "pnpm-lock.yaml"
- ".github/workflows/deploy.yml"
jobs:
deploy-dev:
if: github.ref == 'refs/heads/dev' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
environment: dev
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "pnpm"
- 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: Promote Stack to Organization Scope
run: |
mkdir -p .sanity
echo '{"projectId":"${{ vars.SANITY_STUDIO_PROJECT_ID }}"}' > .sanity/blueprint.config.json
pnpm exec sanity blueprints promote --project-id ${{ vars.SANITY_STUDIO_PROJECT_ID }} --stack ${{ vars.SANITY_STUDIO_DATASET }} --force || true
env:
SANITY_AUTH_TOKEN: ${{ secrets.SANITY_AUTH_TOKEN }}
- name: Deploy Sanity Blueprints Functions
run: |
ORG_ID=$(node -e "
fetch('https://api.sanity.io/v2021-06-07/projects/${{ vars.SANITY_STUDIO_PROJECT_ID }}', {
headers: { Authorization: 'Bearer ${{ secrets.SANITY_AUTH_TOKEN }}' }
})
.then(r => r.json())
.then(d => {
if (!d.organizationId) throw new Error('No organizationId in project response: ' + JSON.stringify(d));
console.log(d.organizationId);
})
.catch(err => { console.error(err); process.exit(1); });
")
echo "Resolved Organization ID: $ORG_ID"
mkdir -p .sanity
echo "{\"organizationId\":\"$ORG_ID\"}" > .sanity/blueprint.config.json
pnpm exec sanity blueprints deploy --organization-id "$ORG_ID" --stack ${{ vars.SANITY_STUDIO_DATASET }}
env:
SANITY_AUTH_TOKEN: ${{ secrets.SANITY_AUTH_TOKEN }}
SANITY_API_WRITE_TOKEN: ${{ secrets.SANITY_API_WRITE_TOKEN }}
SANITY_STUDIO_PROJECT_ID: ${{ vars.SANITY_STUDIO_PROJECT_ID }}
SANITY_STUDIO_DATASET: ${{ vars.SANITY_STUDIO_DATASET }}
YOUTUBE_API_KEY: ${{ secrets.YOUTUBE_API_KEY }}
deploy-production:
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
environment: production
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "pnpm"
- 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: Promote Stack to Organization Scope
run: |
mkdir -p .sanity
echo '{"projectId":"${{ vars.SANITY_STUDIO_PROJECT_ID }}"}' > .sanity/blueprint.config.json
pnpm exec sanity blueprints promote --project-id ${{ vars.SANITY_STUDIO_PROJECT_ID }} --stack ${{ vars.SANITY_STUDIO_DATASET }} --force || true
env:
SANITY_AUTH_TOKEN: ${{ secrets.SANITY_AUTH_TOKEN }}
- name: Deploy Sanity Blueprints Functions
run: |
ORG_ID=$(node -e "
fetch('https://api.sanity.io/v2021-06-07/projects/${{ vars.SANITY_STUDIO_PROJECT_ID }}', {
headers: { Authorization: 'Bearer ${{ secrets.SANITY_AUTH_TOKEN }}' }
})
.then(r => r.json())
.then(d => {
if (!d.organizationId) throw new Error('No organizationId in project response: ' + JSON.stringify(d));
console.log(d.organizationId);
})
.catch(err => { console.error(err); process.exit(1); });
")
echo "Resolved Organization ID: $ORG_ID"
mkdir -p .sanity
echo "{\"organizationId\":\"$ORG_ID\"}" > .sanity/blueprint.config.json
pnpm exec sanity blueprints deploy --organization-id "$ORG_ID" --stack ${{ vars.SANITY_STUDIO_DATASET }}
env:
SANITY_AUTH_TOKEN: ${{ secrets.SANITY_AUTH_TOKEN }}
SANITY_API_WRITE_TOKEN: ${{ secrets.SANITY_API_WRITE_TOKEN }}
SANITY_STUDIO_PROJECT_ID: ${{ vars.SANITY_STUDIO_PROJECT_ID }}
SANITY_STUDIO_DATASET: ${{ vars.SANITY_STUDIO_DATASET }}
YOUTUBE_API_KEY: ${{ secrets.YOUTUBE_API_KEY }}