name: Deploy Documentation
on:
push:
branches:
- main
tags:
- 'v*'
workflow_dispatch:
permissions:
contents: write
jobs:
deploy:
name: Deploy Documentation
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: 1.94.1
- name: Cache Cargo Binaries
uses: actions/cache@v3
with:
path: ~/.cargo/bin
key: ${{ runner.os }}-cargo-evcxr-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-evcxr-
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
- name: Install Python dependencies
run: |
uv sync --dev --all-extras
- name: Install evcxr (Rust Jupyter kernel)
run: |
export PATH="$HOME/.cargo/bin:$PATH"
if ! command -v evcxr_jupyter &> /dev/null; then
echo "evcxr_jupyter not found, installing..."
cargo install evcxr_jupyter
else
echo "evcxr_jupyter found in cache, skipping install."
fi
source .venv/bin/activate
evcxr_jupyter --install
- name: Configure Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git fetch origin gh-pages:gh-pages --force || echo "gh-pages branch does not exist yet"
- name: Build and deploy documentation
run: |
export PATH="$HOME/.cargo/bin:$PATH"
cd mk_docs
if [[ "${{ github.ref }}" == refs/tags/* ]]; then
VERSION=${GITHUB_REF#refs/tags/}
VERSION=${VERSION#v}
echo "Deploying Release Version: $VERSION"
uv run mike deploy --push --branch gh-pages --update-aliases $VERSION latest stable
uv run mike set-default --push --branch gh-pages latest
else
echo "Deploying Development Version (dev)"
uv run mike deploy --push --branch gh-pages dev
fi