Deploy your Astro Site to GitHub Pages
You can use GitHub Pages to host an Astro website directly from a repository on GitHub.com.
How to deploy
Section titled How to deployYou can deploy an Astro site to GitHub Pages by using GitHub Actions to automatically build and deploy your site. To do this, your source code must be hosted on GitHub.
Astro maintains the official withastro/action
to deploy your project with very little configuration. Follow the instructions below to deploy your Astro site to GitHub pages, and see the package README if you need more information.
-
Set the
site
and, if needed,base
options inastro.config.mjs
.astro.config.mjs import { defineConfig } from 'astro/config'export default defineConfig({site: 'https://astronaut.github.io',base: '/my-repo',})site
should behttps://<YOUR_USERNAME>.github.io
orhttps://my-custom-domain.com
base
should be your repository’s name starting with a forward slash, for example/my-repo
. This is so that Astro understands your website’s root is/my-repo
, rather than the default/
.
-
Create a new file in your project at
.github/workflows/deploy.yml
and paste in the YAML below.deploy.yml name: Deploy to GitHub Pageson:# Trigger the workflow every time you push to the `main` branch# Using a different branch name? Replace `main` with your branch’s namepush:branches: [ main ]# Allows you to run this workflow manually from the Actions tab on GitHub.workflow_dispatch:# Allow this job to clone the repo and create a page deploymentpermissions:contents: readpages: writeid-token: writejobs:build:runs-on: ubuntu-lateststeps:- name: Checkout your repository using gituses: actions/checkout@v3- name: Install, build, and upload your siteuses: withastro/action@v1# with:# path: . # The root location of your Astro project inside the repository. (optional)# node-version: 18 # The specific version of Node that should be used to build your site. Defaults to 18. (optional)# package-manager: pnpm@latest # The Node package manager that should be used to install dependencies and build your site. Automatically detected based on your lockfile. (optional)deploy:needs: buildruns-on: ubuntu-latestenvironment:name: github-pagesurl: ${{ steps.deployment.outputs.page_url }}steps:- name: Deploy to GitHub Pagesid: deploymentuses: actions/deploy-pages@v1 -
On GitHub, go to your repository’s Settings tab and find the Pages section of the settings.
-
Choose GitHub Actions as the Source of your site.
-
Commit the new workflow file and push it to GitHub.
Your site should now be published! When you push changes to your Astro project’s repository, the GitHub Action will automatically deploy them for you.