Adjust docs build #8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Deploy Docs | |
on: | |
release: | |
types: [created] | |
pull_request: | |
branches: [main] | |
push: | |
branches: [main] | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Fetch all history for proper versioning | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.13" | |
- name: Install dependencies | |
run: pip install -e ".[dev]" | |
- name: Determine version and build type | |
id: version | |
run: | | |
if [[ "${{ github.event_name }}" == "release" ]]; then | |
echo "VERSION=stable" >> $GITHUB_OUTPUT | |
echo "DIR=stable" >> $GITHUB_OUTPUT | |
echo "TAG=${{ github.ref_name }}" >> $GITHUB_OUTPUT | |
elif [[ "${{ github.event_name }}" == "push" && "${{ github.ref }}" == "refs/heads/main" ]]; then | |
echo "VERSION=latest" >> $GITHUB_OUTPUT | |
echo "DIR=latest" >> $GITHUB_OUTPUT | |
echo "TAG=main" >> $GITHUB_OUTPUT | |
else | |
echo "VERSION=latest" >> $GITHUB_OUTPUT | |
echo "DIR=latest" >> $GITHUB_OUTPUT | |
echo "TAG=pr-${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT | |
fi | |
- name: Generate versions.json | |
run: | | |
# Create a more comprehensive versions.json | |
cat <<EOF > docs/versions.json | |
[ | |
{ | |
"version": "latest", | |
"url": "https://xarray-contrib.github.io/xarray-dataclass/latest/", | |
"name": "latest" | |
}, | |
{ | |
"version": "stable", | |
"url": "https://xarray-contrib.github.io/xarray-dataclass/stable/", | |
"name": "stable" | |
} | |
] | |
EOF | |
- name: Build docs | |
run: | | |
# Set DOCS_VERSION env var according to determined version | |
export DOCS_VERSION=${{ steps.version.outputs.VERSION }} | |
echo "Building documentation for version: $DOCS_VERSION" | |
# Build the documentation | |
python -m sphinx -b html docs docs/_build | |
- name: Copy versions.json to build output | |
run: cp docs/versions.json docs/_build/ | |
- name: Create redirect index.html | |
if: ${{ github.event_name == 'release' || (github.event_name == 'push' && github.ref == 'refs/heads/main') }} | |
run: | | |
# Create a root index.html that redirects to the stable version (or latest if no stable exists) | |
cat <<EOF > docs/_build/index.html | |
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="UTF-8"> | |
<meta http-equiv="refresh" content="0; url=./${{ steps.version.outputs.DIR }}/"> | |
<title>Redirect to ${{ steps.version.outputs.VERSION }} documentation</title> | |
</head> | |
<body> | |
<p>If you are not redirected automatically, follow this <a href="./${{ steps.version.outputs.DIR }}/">link to the ${{ steps.version.outputs.VERSION }} documentation</a>.</p> | |
</body> | |
</html> | |
EOF | |
- name: Deploy docs | |
uses: peaceiris/actions-gh-pages@v3 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: ./docs/_build | |
destination_dir: ${{ steps.version.outputs.DIR }} |