Pin jax in the numpy_vs_numba_vs_jax install cell (#621) #196
Workflow file for this run
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: Build & Publish to GH Pages | |
| on: | |
| push: | |
| tags: | |
| - 'publish*' | |
| permissions: | |
| contents: write | |
| actions: read | |
| pages: write | |
| id-token: write | |
| concurrency: | |
| group: "pages" | |
| cancel-in-progress: false | |
| jobs: | |
| publish: | |
| if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') | |
| runs-on: "runs-on=${{ github.run_id }}/family=g4dn.2xlarge/image=quantecon_ubuntu2404/volume=80gb/spot=false" | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs['page-url'] }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| with: | |
| fetch-depth: 0 # Fetch full git history for changelog feature | |
| - name: Setup Anaconda | |
| uses: conda-incubator/setup-miniconda@v4 | |
| with: | |
| auto-update-conda: true | |
| auto-activate-base: true | |
| miniconda-version: 'latest' | |
| python-version: "3.13" | |
| environment-file: environment.yml | |
| activate-environment: quantecon | |
| - name: Install JAX and Numpyro | |
| shell: bash -l {0} | |
| run: | | |
| # Pinned: jax 0.11.1 (2026-08-17) hangs numpy_vs_numba_vs_jax's | |
| # lax.fori_loop cells -- they jit with device=cpu, so the CPU-path | |
| # regression bites even on these GPU runners. Context is recorded in | |
| # QuantEcon/workspace-lectures#49. With jax already present, the | |
| # lecture's unpinned `!pip install quantecon jax` cell is satisfied | |
| # and does not upgrade. | |
| pip install "jax[cuda13]==0.11.0" | |
| pip install numpyro | |
| python scripts/test-jax-install.py | |
| - name: Check nvidia drivers | |
| shell: bash -l {0} | |
| run: | | |
| nvidia-smi | |
| - name: Install latex dependencies | |
| run: | | |
| sudo apt-get -qq update | |
| sudo apt-get install -y \ | |
| texlive-latex-recommended \ | |
| texlive-latex-extra \ | |
| texlive-fonts-recommended \ | |
| texlive-fonts-extra \ | |
| texlive-xetex \ | |
| latexmk \ | |
| xindy \ | |
| dvipng \ | |
| cm-super | |
| - name: Display Conda Environment Versions | |
| shell: bash -l {0} | |
| run: conda list | |
| - name: Display Pip Versions | |
| shell: bash -l {0} | |
| run: pip list | |
| # Download Build Cache from cache.yml | |
| - name: Download "build" folder (cache) | |
| uses: dawidd6/action-download-artifact@v21 | |
| with: | |
| workflow: cache.yml | |
| branch: main | |
| name: build-cache | |
| path: _build | |
| # Prune the restored _build/html so files deleted from source stop being | |
| # published: sphinx copies html_static_path in but never removes stale | |
| # assets. `jb clean . --html` removes exactly _build/html, leaving | |
| # .jupyter_cache (the expensive execution cache), _build/latex and | |
| # _build/jupyter untouched. Must run BEFORE the PDF/notebook steps below, | |
| # which stage output INTO _build/html. | |
| - name: Prune restored HTML (drop stale assets deleted from source) | |
| shell: bash -l {0} | |
| run: jb clean . --html | |
| # Build Assets (Download Notebooks, PDF via LaTeX) | |
| - name: Build PDF from LaTeX | |
| shell: bash -l {0} | |
| run: | | |
| jb build lectures --builder pdflatex --path-output ./ -n -W --keep-going | |
| - name: Copy LaTeX PDF for GH-PAGES | |
| shell: bash -l {0} | |
| run: | | |
| mkdir -p _build/html/_pdf | |
| cp -u _build/latex/*.pdf _build/html/_pdf | |
| - name: Build Download Notebooks (sphinx-tojupyter) | |
| shell: bash -l {0} | |
| run: | | |
| jb build lectures --path-output ./ --builder=custom --custom-builder=jupyter -n -W --keep-going | |
| zip -r download-notebooks.zip _build/jupyter | |
| - uses: actions/upload-artifact@v7 | |
| with: | |
| name: download-notebooks | |
| path: download-notebooks.zip | |
| - name: Copy Download Notebooks for GH-PAGES | |
| shell: bash -l {0} | |
| run: | | |
| mkdir -p _build/html/_notebooks | |
| cp -u _build/jupyter/*.ipynb _build/html/_notebooks | |
| # Final Build of HTML (with assets) | |
| - name: Build HTML | |
| shell: bash -l {0} | |
| run: | | |
| jb build lectures --path-output ./ -n -W --keep-going | |
| # Deploy to GitHub Pages + publish release assets (html archive, checksum, manifest) | |
| - name: Deploy to GitHub Pages | |
| id: deployment | |
| uses: quantecon/actions/publish-gh-pages@v0.11.1 | |
| with: | |
| build-dir: _build/html | |
| cname: python-programming.quantecon.org | |
| create-release-assets: 'true' | |
| asset-name: 'lecture-python-programming-html' | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Prepare lecture-python-programming.notebooks sync | |
| shell: bash -l {0} | |
| run: | | |
| mkdir -p _build/lecture-python-programming.notebooks | |
| cp -a _notebook_repo/. _build/lecture-python-programming.notebooks | |
| cp _build/jupyter/*.ipynb _build/lecture-python-programming.notebooks | |
| ls -a _build/lecture-python-programming.notebooks | |
| - name: Commit notebooks to lecture-python-programming.notebooks | |
| shell: bash -l {0} | |
| env: | |
| QE_SERVICES_PAT: ${{ secrets.QUANTECON_SERVICES_PAT }} | |
| run: | | |
| git clone https://quantecon-services:$QE_SERVICES_PAT@github.com/quantecon/lecture-python-programming.notebooks | |
| cp _build/lecture-python-programming.notebooks/*.ipynb lecture-python-programming.notebooks | |
| cd lecture-python-programming.notebooks | |
| git config user.name "QuantEcon Services" | |
| git config user.email "admin@quantecon.org" | |
| git add *.ipynb | |
| git commit -m "auto publishing updates to notebooks" | |
| git push origin main |