Skip to content

CI: only commit manifests not full notebooks #27

CI: only commit manifests not full notebooks

CI: only commit manifests not full notebooks #27

Workflow file for this run

name: Deploy to GitHub Pages
on:
push:
branches: [master]
workflow_dispatch:
permissions:
contents: write
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install Python dependencies
run: pip install -r scripts/requirements.txt
- name: Clone PathSim repositories for API extraction
run: |
git clone https://github.com/pathsim/pathsim.git ../pathsim || { echo "Failed to clone pathsim"; exit 1; }
git clone https://github.com/pathsim/pathsim-chem.git ../pathsim-chem || { echo "Failed to clone pathsim-chem"; exit 1; }
git clone https://github.com/pathsim/pathsim-vehicle.git ../pathsim-vehicle || { echo "Failed to clone pathsim-vehicle"; exit 1; }
- name: Fetch all tags and verify repos
run: |
for repo in pathsim pathsim-chem pathsim-vehicle; do
if [ ! -d "../$repo/.git" ]; then
echo "Error: Repository $repo not properly cloned"
exit 1
fi
git -C ../$repo fetch --tags
latest_tag=$(git -C ../$repo describe --tags --abbrev=0 2>/dev/null || echo 'no tags')
echo "✓ $repo: branch=$(git -C ../$repo rev-parse --abbrev-ref HEAD), latest_tag=$latest_tag"
done
# Always extract latest API (for src/lib/api/generated/)
- name: Extract latest API
run: python scripts/extract-api.py
# Prepare notebooks BEFORE version extraction (repos still on main)
- name: Prepare notebooks
run: python scripts/prepare-notebooks.py
# Smart extraction: only missing versions + always re-extract latest
# This checks out tags, so must run after notebook prep
- name: Extract versioned API
run: python scripts/extract-versions.py
# Ensure repos are back on main branch
- name: Restore repos to main branch
run: |
for repo in pathsim pathsim-chem pathsim-vehicle; do
git -C ../$repo checkout main 2>/dev/null || git -C ../$repo checkout master 2>/dev/null || true
echo "✓ $repo on $(git -C ../$repo rev-parse --abbrev-ref HEAD)"
done
# Always regenerate manifests (to pick up new versions)
- name: Generate version manifests
run: python scripts/generate-manifests.py
- name: Build search and crossref indexes
run: python scripts/build-indexes.py
- name: Commit generated files
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
# Only commit API data and versioned cache (not full notebooks - they're regenerated from source)
git add src/lib/api/generated/ static/api/versions/
# Only commit notebook manifests, not full .ipynb files
git add static/notebooks/*/manifest.json 2>/dev/null || true
if git diff --staged --quiet; then
echo "No changes to commit"
else
git commit -m "Update generated API data and indexes [skip ci]"
git push
fi
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
env:
BASE_PATH: '/${{ github.event.repository.name }}'
run: npm run build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: build
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