Skip to content

Build and deploy documentation #1196

Build and deploy documentation

Build and deploy documentation #1196

name: Build and deploy documentation
on:
push:
# Runs on pushes targeting the release branches
branches:
- main
- nixos-24.05
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow one concurrent deployment
concurrency:
group: "pages"
cancel-in-progress: true
jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
timeout-minutes: 40
env:
repo: ${{ github.repository }}
repoName: ${{ github.event.repository.name }}
out: docs-build
steps:
- name: Install nix
uses: cachix/install-nix-action@v26
with:
nix_path: nixpkgs=channel:nixos-unstable
- name: Configure cachix
uses: cachix/cachix-action@v15
with:
name: nix-community
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
- name: Build docs
run: |
set -ex
# 1: branch
# 2: dest-dir (relative to /nixvim/)
build() {
flake="github:${repo}${1:+/$1}"
baseHref="/${repoName}/${2:+$2/}"
destDir="${out}${baseHref}"
# Build docs for the given flake ref, overriding baseHref in the derivation args
nix build --impure --expr '(builtins.getFlake "'"$flake"'").outputs.packages.${builtins.currentSystem}.docs.override {
baseHref = "'"$baseHref"'";
}'
# Copy the result to the dest-dir
mkdir -p "$destDir"
cp -r result/share/doc/* "$destDir"
}
# Install main-branch docs at the top-level
build 'main' ''
# Install 24.05 docs under 'stable'
# TODO: consider having `<release>` instead of `stable`
build 'nixos-24.05' 'stable'
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: "docs-build"
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4