---
name: azion-build-with-jekyll
description: >-
  Create a Jekyll site from an Azion template or with the Azion CLI, and deploy it to an Azion domain.
---

# Build with Jekyll

You can deploy a Jekyll site on Azion from a template in Azion Console or with the [Azion CLI](/en/documentation/devtools/cli/). Both routes give you a Jekyll site that runs on Azion and answers on an Azion domain.

Azion serves a Jekyll site as a static application. The project configuration uploads the `./_site` folder to a storage bucket, and an [application](/en/documentation/platform/applications/) serves the files from that bucket. For the other frameworks Azion builds, refer to [Frameworks compatibility](/en/documentation/devtools/runtime/frameworks/frameworks-compatibility/).

---

Pick a route below. The prerequisites and the deploy steps change with your choice.

## Prerequisites

- An Azion account. To create one, refer to [Create an account](/en/documentation/fundamentals/creating-account/).

**Console**

- Access to Azion Console. To sign in, refer to [How to access Azion Console](/en/documentation/guides/platform/account-and-billing/how-to-access-azion-console/).
- A GitHub account. The template deploy asks you to connect it.

**CLI**

- The Azion CLI, installed and logged in. To set it up, refer to [Azion CLI quickstart](/en/documentation/devtools/cli/quickstart/).
- Node.js 18 or later, and npm.
- Ruby and Bundler.
- A terminal and a code editor.

---

## Jekyll templates

Each template is a Jekyll project that Azion deploys for you. The Console route starts from one of these templates:

| Template                                                                                                | Use             |
| ------------------------------------------------------------------------------------------------------- | --------------- |
| [Jekyll Boilerplate](/en/documentation/guides/application-development/frameworks/jekyll-boilerplate/)   | Starter project |
| [Jekyll Cart](/en/documentation/guides/application-development/frameworks/jekyll-ecommerce-collection/) | Shopping cart   |
| [Supply](/en/documentation/guides/application-development/frameworks/jekyll-ecommerce-collection/)      | E-commerce      |

Jekyll Cart and Supply share one guide. For more information on templates, refer to [Azion Marketplace](/en/documentation/platform/marketplace/). In the CLI route, the template picker of `azion init` lists the same three templates.

---

## Deploy the site

Each route builds the Jekyll project and creates the resources that serve it on Azion. Use the panel of your route:

**Console**

To deploy a Jekyll template from Azion Console:

1. **Open the templates**

   Access [Azion Console](https://console.azion.com/) > **Create** > **Templates**.

2. **Search for Jekyll**

   In **Search by name, framework, or keyword**, enter `Jekyll`.

3. **Select a Jekyll template**

4. **Connect your GitHub account**

   When the form shows **GitHub Connection**, select **Connect with GitHub**. Then install the [Azion GitHub App](/en/documentation/guides/application-development/automation/azion-github-app/).

5. **Select a Git Scope**

   In **Git Scope**, select the scope of the template.

6. **Fill in the settings the template asks for**

7. **Select Deploy**

The deploy page opens and shows the **Deploy Log** during the build. After a successful deploy, the page shows **Successfully created!**, the domain URL, and a **Manage** button that opens the application.

**CLI**

To create the project, run `azion init` and give it a name. In the preset picker, select *Jekyll*. In the template picker, select a template:

```bash
azion init --name my-site --auto -y
```

With `-y`, the command installs the dependencies. With `--auto`, it does not ask about a local development server or a deploy. For the questions it asks without these options, refer to [Azion CLI init](/en/documentation/devtools/cli/init/). With the *Jekyll Boilerplate* template, the output is:

```text
? Choose a preset:  [Use arrows to move, type to filter]
> AI Studio
  Angular
  Astro
  Docusaurus
  Eleventy
  Emscripten
  Gatsby
  Hexo
  Hono
  Hugo
  Javascript
  Jekyll
  Next
  Nuxt
  OpenNextJS
  Preact
  Qwik
  React
  Rustwasm
  Stencil
  Svelte
  Typescript
  Vitepress
  Vue
  Vuepress
? Choose a preset: Jekyll
? Choose a template:  [Use arrows to move, type to filter]
> Jekyll Boilerplate
  Jekyll Cart
  Supply
? Choose a template: Jekyll Boilerplate

Fetching selected template...

Template successfully fetched
Template successfully configured
Installing application dependencies
up to date, audited 1 package in 326ms
found 0 vulnerabilities
…
[Azion] [Build] › ℹ  info      Using preset: jekyll
[Azion] [Build] › ✔  success   Build completed successfully with only azion.config
[Azion] [IaC] › ✔  success   Manifest generated successfully at <project-dir>/my-site/.edge/manifest.json
If you want to start a local development server later, run 'azion dev'
Make sure to change to the new working directory before running building or deploying your project
If you want to deploy your application later, run 'azion deploy'
Make sure to change to the new working directory before running building or deploying your project
Your application my-site was initialized successfully
```

The project is in a `my-site` folder. Its `azion.config.cjs` file sets the `jekyll` preset. It also uploads `./_site` to a storage bucket that workloads can read but not change. For every setting in the file, refer to [azion.config.js](/en/documentation/devtools/cli/azion-config-js/).

To build the site, go to the project folder and run `azion build`:

```bash
cd my-site
azion build
```

The command runs Azion Bundler with the `jekyll` preset, which runs `bundle install && bundle exec jekyll build`, so the Bundler version that `Gemfile.lock` names must be installed. For the flags of the command, refer to [Azion CLI build](/en/documentation/devtools/cli/build/).

To deploy the site, run `azion deploy` in the project folder:

```bash
azion deploy
```

The command uploads the project and opens the Console page of the deploy in your browser. It also prints the URL of that page, for when the browser does not open. At the end, it prints the URL of the site's domain. For the full output and every flag, refer to [Azion CLI deploy](/en/documentation/devtools/cli/deploy/).

To test the site on your machine before the deploy, refer to [Azion CLI dev](/en/documentation/devtools/cli/dev-command/). For a Jekyll project that already exists, run `azion link` in its folder and select the Jekyll preset. For more information, refer to [Azion CLI link](/en/documentation/devtools/cli/link-command/).

---

## Check the site

The deploy gives you the URL of the site's Azion domain, in the form `https://xxxxxxxxxx.map.azionedge.net`. The Console deploy page shows the URL, and `azion deploy` prints it at the end. Open the URL in a browser to see the Jekyll site.

The first deploy can take several minutes to answer from every location; later deploys take about two minutes. A location that does not have the site yet answers with a `404` page that reads `There's nothing here yet`. If you get this response, wait and request the URL again.

---

## Next steps

- [Frameworks compatibility](/en/documentation/devtools/runtime/frameworks/frameworks-compatibility.md): See the frameworks and presets that Azion builds.
- [Azion CLI build](/en/documentation/devtools/cli/build.md): Change how the CLI builds the Jekyll project.
- [Azion CLI deploy](/en/documentation/devtools/cli/deploy.md): Read the deploy output and the flags that change a deploy.
- [azion.config.js](/en/documentation/devtools/cli/azion-config-js.md): Change the bucket, cache, and rules that the Jekyll preset generates.
