Deploying to Cloudflare Workers

Cloudflare Workers is a serverless platform for creating entirely new applications or augmenting existing ones without configuring or maintaining infrastructure. With Workers Sites you can build any static site locally (e.g. your Gatsby project), and deploy to a workers.dev subdomain or custom domain.

This guide will get you started in a few steps:

  1. Installing wrangler CLI

Workers Sites requires wrangler, a tool to upload your static files. The most straight forward way to install wrangler is with npm, run the following command:

  1. Initialize the Project

To create the Worker code that will serve your Gatsby files, from the root of your Gatsby project run:

You’ll notice your project structure should now look something like:

  1. Build the project

To run your application on Cloudflare Workers Sites, you first need to build your application locally. This should generate your files in ./public.

  1. Configure

To authenticate into your Cloudflare account run:

Follow the Quick Start for steps on gathering the correct account ID and API token to link wrangler to your Cloudflare account.

If you don’t already have a workers.dev domain run:

Then, add your account ID to the wrangler.toml file, and set bucket to "./public", which is where Gatsby’s built files are output by default:

This deploys to your workers.dev subdomain. For a custom domain see Quick Start.

  1. Deploy

You can deploy your application by running the following command in the root of the project directory:

Now your site is available at gatsby-project.subdomain.workers.dev!

  1. CI with GitHub Actions

Use wrangler’s GitHub action plugin to automatically deploy to Workers every time you push to master. Alternatively, you can use Gatsby Cloud Hosting or Cloudflare Pages.

Once GitHub Actions is enabled on your repo, add a file to your project’s root called .github/workflows/main.yml with the contents:

Set up CF_API_TOKEN in GitHub secrets with appropriate values from Quick Start.

Additional resources