Blueprints

Deploy Blueprints with GitHub Actions

Use the official Blueprints actions to plan and deploy your Blueprints with GitHub Actions.

The official Blueprints GitHub Actions let you add Blueprint planning and deployment to your existing GitHub workflows.

Prerequisites

Create a Blueprint

Before you get started, 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:

Create a Sanity API token

Next, you’ll need a Sanity API token with permission to deploy the Blueprint. The recommended way to create one is with the CLI. In your project directory, run:

The command creates a robot token with the role required to plan, deploy, and destroy Blueprints in your Blueprint’s scope: blueprints-deployer for a project-scoped Blueprint, or blueprints-deployer-robot for an organization-scoped one. The --print flag prints only the raw token, so copy it from your terminal. Minting a token requires project admin access for a project-scoped Blueprint, or organization admin access for an organization-scoped one.

To create the token in the Sanity Manage UI instead, follow these steps:

  • Go to sanity.io/manage.
  • Select your project or organization. Organization-scoped Blueprints require an organization-level token.
  • Go to API > Tokens.
  • Select Add API token.
  • Create a token with the Blueprints Deployer permission.
  • Copy the token (you won't be able to see it again).

If you’re creating tokens programmatically, you’ll need the following permissions:

  • Project-scoped: sanity.project.blueprints.deploy
  • Organization-scoped: sanity.blueprints.deploy

Add token to GitHub secrets

Next, add the API token to your GitHub secrets.

  • Go to your GitHub repository.
  • Navigate to Settings > Secrets and variables > Actions.
  • Select New repository secret.
  • Name: SANITY_TOKEN.
  • Value: Paste your Sanity API token.
  • Select Add secret.

Create your workflows

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:

  • On pushes to your main/production branch for continuous deployment.
  • As part of a release workflow.
  • For scheduled deployments.
  • After manual workflow dispatch.

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.

Loading...

Some ways you can use it are:

  • Confirm what a Blueprint will do before deploying.
  • Automatically post results as a collapsible PR comment.
  • Keep your PR discussions clean and organized.

Create a Deploy workflow

Create .github/workflows/deploy-blueprints.yml. Replace the stack and project ID placeholders with your values.

Create a Plan workflow

Create .github/workflows/plan-blueprints.yml. Replace the stack and project ID placeholders with your values.

Custom working directory

If your Blueprint isn’t at the root of your repository, add working-directory.

Use deployment status in workflow

The deploy action logs the deployment progress and provides a deployment-status output you can use in subsequent workflow steps. For example:

Troubleshooting

Missing project or organization ID

If the action fails with Missing either a `project-id` or an `organization-id`., it received neither input. Set project-id for a project-scoped Blueprint, or organization-id for an organization-scoped one. If the value comes from a secret or variable, check that it isn’t empty.

Plan results don’t appear on the pull request

The Plan action needs the pull-requests: write permission to create or update its pull request comment. Add it under the top-level permissions key of your workflow file.

Deploys to an organization-scoped stack fail

When a project ID is set, the CLI uses the project scope, even if an organization ID is also set. For an organization-scoped Blueprint, set organization-id and remove project-id. The token must match the scope too. A project-scoped token can’t deploy an organization-scoped stack, including a stack you promoted to organization scope. Mint an organization-scoped token and update the SANITY_TOKEN secret:

Configuration reference

  • Requiredsanity-token

    string

    A Sanity API token with deploy permissions.

  • Requiredstack-id

    string

    The Blueprint stack ID. Find this by running sanity blueprints config to view the active stack, or sanity blueprints stacks to view all current stacks.

  • Sanity project ID. Find this by running sanity blueprints config or in your project settings at sanity.io/manage. Required if you don’t set organization-id. Don’t set both: when both are set, the CLI uses the project scope.

  • Set the Sanity organization ID for organization-scoped stacks. Required if you don’t set project-id. Don’t set both: when both are set, the CLI uses the project scope.

  • Path to the directory containing your Blueprint config (sanity.blueprint.ts). Defaults to the repository root.

Visit the GitHub Actions repository for additional details.

Next steps

Was this page helpful?