Was this page helpful?
Use the official action to deploy your blueprints with GitHub Actions.
The official Blueprints GitHub Actions lets you add Blueprint planning and deployment to your existing GitHub workflows.
Before you get started, you should have a local blueprint configured and committed to the git repository you want to use. If you’re new to blueprints, you can get started by creating a function.
Before using these actions, you need configuration values from your project. Run the following command to retrieve your project and stack IDs.
npx sanity blueprints config
Current configuration: Sanity Project: <project_id> Deployment ID: <stack_id>
Next you’ll need a Sanity API token with permission to deploy the blueprint.
Next, add the API token to your GitHub secrets.
SANITY_TOKEN.There are two actions available: deploy and plan.
The Deploy action executes sanity blueprints deploy in your GitHub workflow, automatically applying your Blueprint configuration to your Sanity project. It deploys your resources, like functions, and provides a deployment status output for use in your workflow.
Some ways you can use it are:
The Plan action runs sanity blueprints plan and automatically posts the results as a PR comment, giving your team visibility into what changes will be applied. It shows specific changes in the resources, as well as a summary of all changes.
Some ways you can use it are:
Create .github/workflows/deploy-blueprints.yml. Replace the stack and project ID placeholders with your values.
name: Deploy Sanity Blueprints
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Deploy blueprints
uses: sanity-io/blueprints-actions/deploy@deploy-v2
with:
sanity-token: ${{ secrets.SANITY_TOKEN }}
stack-id: 'ST_1234xyz'
project-id: '1234xyz'Create .github/workflows/plan-blueprints.yml. Replace the stack and project ID placeholders with your values.
name: Sanity Blueprints Plan
on:
pull_request:
permissions:
contents: read
pull-requests: write # Required for posting comments
jobs:
plan:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Plan blueprints changes
uses: sanity-io/blueprints-actions/plan@plan-v1
with:
sanity-token: ${{ secrets.SANITY_TOKEN }}
stack-id: 'ST_1234xyz'
project-id: '1234xyz'If your blueprint isn’t at the root of your repository, add working-directory.
name: Sanity Blueprints Plan
on:
pull_request:
permissions:
contents: read
pull-requests: write # Required for posting comments
jobs:
plan:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Plan blueprints changes
uses: sanity-io/blueprints-actions/plan@plan-v1
with:
sanity-token: ${{ secrets.SANITY_TOKEN }}
stack-id: 'ST_1234xyz'
project-id: '1234xyz'
working-directory: 'path/to/blueprints'The deploy action logs the deployment progress and provides a deployment-status output you can use in subsequent workflow steps. For example:
- name: Deploy blueprints
id: deploy
uses: sanity-io/blueprints-actions/deploy@deploy-v2
with:
sanity-token: ${{ secrets.SANITY_TOKEN }}
stack-id: 'ST_1234xyz'
project-id: '1234xyz'
- name: Notify on success
if: steps.deploy.outputs.deployment-status == 'success'
run: echo "Deployment successful!"A Sanity API token with deploy permissions.
The blueprint stack ID. Find this by running sanity blueprints config to view the active stack, or sanity blueprints stacks view all current stacks.
Sanity project ID. Find this by running sanity blueprints config or in your project settings at sanity.io/manage.
Path to the directory containing your blueprint config (sanity.blueprint.ts). Defaults to the repository root.
Visit the GitHub Actions Repository for additional details.
npx sanity blueprints configCurrent configuration:
Sanity Project: <project_id>
Deployment ID: <stack_id>
name: Deploy Sanity Blueprints
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Deploy blueprints
uses: sanity-io/blueprints-actions/deploy@deploy-v2
with:
sanity-token: ${{ secrets.SANITY_TOKEN }}
stack-id: 'ST_1234xyz'
project-id: '1234xyz'name: Sanity Blueprints Plan
on:
pull_request:
permissions:
contents: read
pull-requests: write # Required for posting comments
jobs:
plan:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Plan blueprints changes
uses: sanity-io/blueprints-actions/plan@plan-v1
with:
sanity-token: ${{ secrets.SANITY_TOKEN }}
stack-id: 'ST_1234xyz'
project-id: '1234xyz'name: Sanity Blueprints Plan
on:
pull_request:
permissions:
contents: read
pull-requests: write # Required for posting comments
jobs:
plan:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Plan blueprints changes
uses: sanity-io/blueprints-actions/plan@plan-v1
with:
sanity-token: ${{ secrets.SANITY_TOKEN }}
stack-id: 'ST_1234xyz'
project-id: '1234xyz'
working-directory: 'path/to/blueprints'- name: Deploy blueprints
id: deploy
uses: sanity-io/blueprints-actions/deploy@deploy-v2
with:
sanity-token: ${{ secrets.SANITY_TOKEN }}
stack-id: 'ST_1234xyz'
project-id: '1234xyz'
- name: Notify on success
if: steps.deploy.outputs.deployment-status == 'success'
run: echo "Deployment successful!"