MAINT: Phase 1 - Add HTML archives to GitHub release assets (#659) #78
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*' | |
| jobs: | |
| publish: | |
| if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: Setup Anaconda | |
| uses: conda-incubator/setup-miniconda@v3 | |
| 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 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 | |
| - name: Download "build" folder (cache) | |
| uses: dawidd6/action-download-artifact@v11 | |
| with: | |
| workflow: cache.yml | |
| branch: main | |
| name: build-cache | |
| path: _build | |
| # Build Assets (Download Notebooks and PDF via LaTeX) | |
| - name: Build PDF from LaTeX | |
| shell: bash -l {0} | |
| run: | | |
| jb build lectures --builder pdflatex --path-output ./ -n --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 | |
| - 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 | |
| # Build HTML (Website) | |
| # BUG: rm .doctress to remove `sphinx` rendering issues for ipywidget mimetypes | |
| # and clear the sphinx cache for building final HTML documents. | |
| - name: Build HTML | |
| shell: bash -l {0} | |
| run: | | |
| rm -r _build/.doctrees | |
| jb build lectures --path-output ./ | |
| # Create HTML archive for release assets | |
| - name: Create HTML archive | |
| shell: bash -l {0} | |
| run: | | |
| tar -czf lecture-python-intro-html-${{ github.ref_name }}.tar.gz -C _build/html . | |
| sha256sum lecture-python-intro-html-${{ github.ref_name }}.tar.gz > html-checksum.txt | |
| # Create metadata manifest | |
| cat > html-manifest.json << EOF | |
| { | |
| "tag": "${{ github.ref_name }}", | |
| "commit": "${{ github.sha }}", | |
| "timestamp": "$(date -Iseconds)", | |
| "size_mb": $(du -sm _build/html | cut -f1), | |
| "file_count": $(find _build/html -type f | wc -l) | |
| } | |
| EOF | |
| - name: Upload archives to release | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| files: | | |
| lecture-python-intro-html-${{ github.ref_name }}.tar.gz | |
| html-checksum.txt | |
| html-manifest.json | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Deploy to Netlify | |
| uses: nwtgck/actions-netlify@v3.0 | |
| with: | |
| publish-dir: '_build/html/' | |
| production-branch: main | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| deploy-message: "Deploy from GitHub Actions" | |
| env: | |
| NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} | |
| NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} | |
| - name: Deploy website to gh-pages | |
| uses: peaceiris/actions-gh-pages@v4 | |
| with: | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| publish_dir: _build/html/ | |
| cname: intro.quantecon.org | |
| - name: Upload "_build" folder (cache) | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: build-publish | |
| path: _build | |
| # Sync notebooks | |
| - name: Prepare lecture-python-intro.notebooks sync | |
| shell: bash -l {0} | |
| run: | | |
| mkdir -p _build/lecture-python-intro.notebooks | |
| cp -a _notebook_repo/. _build/lecture-python-intro.notebooks | |
| cp _build/jupyter/*.ipynb _build/lecture-python-intro.notebooks | |
| ls -a _build/lecture-python-intro.notebooks | |
| - name: Commit latest notebooks to lecture-python-intro.notebooks | |
| uses: cpina/github-action-push-to-another-repository@main | |
| env: | |
| API_TOKEN_GITHUB: ${{ secrets.QUANTECON_SERVICES_PAT }} | |
| with: | |
| source-directory: '_build/lecture-python-intro.notebooks/' | |
| destination-repository-username: 'QuantEcon' | |
| destination-repository-name: 'lecture-python-intro.notebooks' | |
| commit-message: 'auto publishing updates to notebooks' | |
| destination-github-username: 'quantecon-services' | |
| user-email: services@quantecon.org |