Deploy Astro to GitHub Pages
This action for Astro builds your static Astro project for GitHub Pages.
For more information, please see our complete deployment guide—Deploy your Astro Site to GitHub Pages.
Usage
Note: Want to get started even faster? Create a repository from our official GitHub Pages template!
Inputs
path- Optional: the root location of your Astro project inside the repository.node-version- Optional: the specific version of Node that should be used to build your site. Defaults to22.package-manager- Optional: the Node package manager that should be used to install dependencies and build your site. Automatically detected based on your lockfile. Accepted values:npm,yarn,pnpm,bun, anddeno. A version tag is also accepted, for examplenpm@11.6.2,pnpm@10,bun@latest, ordeno@v2.x. If not provided, version will default tolatest.build-cmd- Optional: the command to run to build your site. Defaults todeno task buildfor sites using Deno and to<package-manager> run buildfor all other package managers.cache- Optional: enable Astro build cache to speed up subsequent builds. Caches optimized images and other build assets. Defaults totrue.cache-dir- Optional: path to the Astro cache directory (relative topath). Defaults tonode_modules/.astro. Only used whencacheistrue.out-dir- Optional: path to the Astro output directory, as created by build (relative topath). Defaults todist. This directory is artifacted by this action.
Example workflow:
Build and Deploy to GitHub Pages
Create a file at .github/workflows/deploy.yml with the following content.
name: Deploy to GitHub Pages on: # Trigger the workflow every time you push to the `main` branch # Using a different branch name? Replace `main` with your branch’s name push: 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 deployment permissions: contents: read pages: write id-token: write jobs: build: runs-on: ubuntu-latest steps: - name: Checkout your repository using git uses: actions/checkout@v6 - name: Install, build, and upload your site output uses: withastro/action@v5 # with: # path: . # The root location of your Astro project inside the repository. (optional) # node-version: 22 # The specific version of Node that should be used to build your site. Defaults to 22. (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) # build-cmd: pnpm run build # The command to run to build your site. Runs the package build script/task by default. (optional) # out-dir: dist # The output directory created by the build command. Defaults to dist. (optional) deploy: needs: build runs-on: ubuntu-latest environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4