notes/content/Deploy Docusaurus to Netlify from CI.md
irl 7ac34257d9
All checks were successful
Build and deploy / lint (push) Successful in 1m5s
update
2025-06-20 14:33:11 +01:00

2.4 KiB

Docusaurus sites can be deployed to Netlify from the CI of our Forgejo instance. It's necessary to set the two variables in the settings for the repository:

  • NETLIFY_AUTH_TOKEN (secret, so goes into Actions -> Secrets)
  • NETLIFY_SITE_ID (pretty sure isn't secret, so goes into Actions->Variables)

Running netlify build without being logged in seems to generate errors. Rather just use npm run build to generate the build in the build/ directory.

Running netlify deploy will automatically detect these as environment variables, but setting the values as variables in Forgejo does not automatically make them into environment variables, so they should be passed explicitly in the commands.

Example Workflow

This workflow uses npm to manage the dependencies, rather than having them managed by Nix. This may introduce discrepancies between environments, but the package-lock.json should be minimising those even if not providing any guarantees.

{  
  inputs = {  
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";  
    flake-utils.url = "github:numtide/flake-utils";  
  };  
  outputs =  
    {  
      self,  
      nixpkgs,  
      flake-utils,  
      ...  
    }:  
    flake-utils.lib.eachDefaultSystem (  
      system:  
      let  
        pkgs = import nixpkgs {  
          inherit system;  
        };  
      in  
      with pkgs;  
      {  
        devShells.default = mkShell {  
          buildInputs = [  
            git  
            netlify-cli  
            nodejs_22  
          ];  
        };  
      }  
    );  
}
name: Build and deploy  
  
on:  
  push:  
    branches:  
      - main  
  
jobs:  
  lint:  
    runs-on: docker  
  
    container:  
      image: ghcr.io/catthehacker/ubuntu:runner-latest  
  
    steps:  
      - name: Checkout code  
        uses: actions/checkout@v4  
  
      - name: Set up Nix  
        uses: https://guardianproject.dev/actions/install-nix-action@v31  
  
      - name: Install npm dependencies  
        run: nix develop --command npm install  
  
      - name: Generate OpenAPI section  
        run: nix develop --command npm run docusaurus gen-api-docs api  
  
      - name: Run build  
        run: nix develop --command npm run build  
  
      - name: Deploy  
        run: nix develop --command netlify deploy --auth ${{ secrets.NETLIFY_AUTH_TOKEN }} -s ${{ vars.NETLIFY_SITE_ID }}