Unlock seamless workflows and faster delivery with our latest releases – get the details
Last updated June 19, 2023

Github Action for Sanity Deployment: Simplify Your Workflow

By Roboto Studio & Hrithik Prasad

Tired of manually deploying Sanity? Why don't we speed the whole process up by setting up GitHub actions to deploy it automatically

Introduction to GitHub Actions

Github Actions is a robust CI/CD (Continuous Integration/Continuous Deployment) tool offered by Github. It enables developers to automate workflows and tasks, reducing manual effort and ensuring consistent, error-free deployments. With GitHub Actions, you can define custom workflows using YAML files and trigger them based on specific events, such as code commits, pull requests, or scheduled intervals.

Overview of Sanity CMS

Sanity CMS is a flexible and customizable headless content management system that allows developers to create structured content for their applications. It offers a real-time collaborative editing environment and a robust content API, making it an ideal choice for projects of all sizes. Sanity CMS provides a clean separation between content and presentation, enabling developers to build dynamic websites and applications with ease.

Combining Github Actions with Sanity CMS

By combining the capabilities of GitHub Actions and Sanity CMS, developers can automate the deployment of Sanity projects. This integration allows for efficient collaboration, seamless deployments, and improved development workflows. With GitHub Actions for Sanity deployment, you can focus on writing code and delivering value, while the deployment process takes care of itself.

Getting Started with Github Actions

To begin using Github Actions for Sanity deployment, you need to set up a Github repository and create a workflow file. This section will guide you through the initial steps required to get started with GitHub Actions.

Setting up a Github Repository

Before you can utilize Github Actions, you need to have a repository set up on Github. If you already have a repository, you can skip this step. Otherwise, follow these steps to create a new repository:

  1. Log in to your Github account and navigate to the main page.
  2. Click on the "New" button located near the top-left corner of the page.
  3. Provide a meaningful name for your repository and an optional description.
  4. Choose whether to make the repository public or private, based on your requirements.
  5. Select the option to initialize the repository with a README file.
  6. Click on the "Create repository" button to create your repository.

Creating a Workflow File

Once you have a repository set up, you can create a workflow file to define your deployment process. The workflow file contains instructions that Github Actions will follow when triggered by specific events. Follow these steps to create a workflow file:

  1. In your repository, navigate to the "Actions" tab.
  2. Click on the "Set up a workflow yourself" button, or choose from one of the available templates.
  3. Provide a name for your workflow file, such as deploy-sanity.yml.
  4. Github Actions uses YAML syntax, so ensure that your file has the .yml extension.
  5. Open the workflow file in the code editor of your choice.

Configuring Workflow Triggers

In the workflow file, you need to define the triggers that will initiate the deployment process. Github Actions provides several event types that can trigger workflows, such as push events, pull requests, and scheduled intervals. Here's an example of how you can configure a workflow to trigger a push event:

name: Deploy sanity studio on: push: branches: [main]

In this example, the workflow is triggered whenever a push event occurs on the main branch. You can customize the triggers according to your specific requirements.

Configuring Sanity for Deployment

To deploy Sanity projects using Github Actions, you need to configure your Sanity project for deployment. This involves creating a Sanity project, defining its schema, and authenticating API tokens.

Creating a Sanity Project

If you haven't already, create a new Sanity project or use an existing one. Follow the official Sanity documentation to set up your project and obtain the necessary project credentials.

Defining Your Sanity Schema

The Sanity schema defines the structure and organization of your content. It determines the fields, data types, and relationships within your Sanity project. Ensure that your Sanity schema is properly defined before deploying your project. Refer to the Sanity documentation for detailed instructions on creating and modifying schemas.

Authenticating Sanity API Tokens

To interact with your Sanity project programmatically, you need to authenticate using an API token. Generate a new token from the Sanity project make sure to select deploy studio token. store it securely. Later, you'll need to configure Github Actions to use this token for deployment.

Deploying Your Sanity Project

Once your Sanity project is built and tested, it's time to deploy it. This section guides you through the process of deploying your Sanity project using Github Actions.

Choosing a Deployment Provider

There are several hosting and deployment platforms available for Sanity projects. Depending on your specific needs and preferences, choose a provider that best suits your requirements. Some popular options include Vercel, Netlify, and AWS Amplify. Each provider offers different features and pricing plans, so consider your project's scalability and budget when making a decision.

Setting up Deployment Secrets

To securely authenticate with your chosen deployment provider, configure deployment secrets in your Github repository. Deployment secrets allow you to store sensitive information, such as API keys and access tokens, securely. Consult the documentation of your deployment provider and Github Actions to understand how to set up deployment secrets.

Deploying to Multiple Environments

In many cases, you may need to deploy your Sanity project to multiple environments, such as staging and production. Github Actions allows you to define multiple workflows, each responsible for deploying to a specific environment. Customize your workflows and deployment configurations to accommodate different environments and ensure proper separation between development and production deployments.

Troubleshooting Github Actions for Sanity Deployment

Despite careful planning and implementation, issues may arise during the deployment process. This section covers common issues faced when using Github Actions for Sanity deployment and provides troubleshooting tips to help you resolve them.

Common Issues and Solutions

  1. Authentication Errors: If you encounter authentication errors during deployment, double-check your API tokens and ensure they are correctly configured in your deployment secrets.
  2. Build Failures: Build failures may occur due to missing dependencies, syntax errors, or other issues in your project. Review the build logs and make the necessary adjustments to your code or build process.
  3. Deployment Timeouts: Large projects or complex deployments may exceed the maximum execution time for a Github Actions workflow. Adjust the timeout configuration or optimize your deployment process to address this issue.

Debugging Workflow Failures

When a deployment workflow fails, it's important to identify the root cause and fix it promptly. Github Actions provides detailed logs and debugging capabilities to help you troubleshoot workflow failures. Analyze the logs, review error messages, and consult relevant documentation or community resources to find solutions to the specific issue you're facing.

Complete Workflow Github Action Code

name: Deploy sanity studio on: push: branches: [main] jobs: deploy: name: Build and deploy runs-on: ubuntu-latest env: SANITY_AUTH_TOKEN: ${{ secrets.SANITY_DEPLOY_TOKEN }} steps: - uses: actions/checkout@v2 with: fetch-depth: 2 - uses: actions/setup-node@v2 with: node-version: "16.x" - name: Restore cached Node Modules 💾 id: cache-node-modules uses: actions/cache@v3 with: path: node_modules key: node-modules-${{ hashFiles('package-lock.json') }} - name: Install dependencies run: npm install - name: Deploy Studio run: npm run deploy

Conclusion

Github Action for Sanity Deployment empowers developers to streamline their workflow and automate the deployment process of Sanity projects. By leveraging the power of Github Actions and the flexibility of Sanity CMS, you can save time, improve collaboration, and ensure consistent, error-free deployments. From setting up your repository to troubleshooting issues, this guide has provided you with a comprehensive understanding of using Github Actions for Sanity deployment. Start implementing Github Actions in your Sanity projects and experience the benefits of automated deployments.

Sanity – build remarkable experiences at scale

Sanity Composable Content Cloud is the headless CMS that gives you (and your team) a content backend to drive websites and applications with modern tooling. It offers a real-time editing environment for content creators that’s easy to configure but designed to be customized with JavaScript and React when needed. With the hosted document store, you query content freely and easily integrate with any framework or data source to distribute and enrich content.

Sanity scales from weekend projects to enterprise needs and is used by companies like Puma, AT&T, Burger King, Tata, and Figma.

Other guides by authors