From a445497f5cee2bdb28478380ac95cac5cf0c110d Mon Sep 17 00:00:00 2001 From: mmcky Date: Fri, 7 Nov 2025 14:48:42 +1100 Subject: [PATCH 1/3] Migrate cache.yml to use composite actions - Replace conda-incubator/setup-miniconda with quantecon/actions/setup-lecture-env - Replace manual LaTeX installation with quantecon/actions/setup-latex - Replace manual jb build with quantecon/actions/build-lectures - Benefits: Automatic caching, cleaner workflow, reusable patterns --- .github/workflows/cache.yml | 48 ++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/.github/workflows/cache.yml b/.github/workflows/cache.yml index d5e21df..f8cfdc3 100644 --- a/.github/workflows/cache.yml +++ b/.github/workflows/cache.yml @@ -10,44 +10,42 @@ jobs: steps: - name: Checkout uses: actions/checkout@v5 - - name: Setup Anaconda - uses: conda-incubator/setup-miniconda@v3 + + # NEW: Use composite action for environment setup + - name: Setup Lecture Environment + uses: quantecon/actions/setup-lecture-env@main with: - auto-update-conda: true - auto-activate-base: true - miniconda-version: 'latest' - python-version: "3.13" - environment-file: environment.yml - activate-environment: quantecon + python-version: '3.13' + environment-file: 'environment.yml' + activate-environment: 'quantecon' + - name: graphviz Support # TODO: required? run: | sudo apt-get -qq update && sudo apt-get install -y graphviz - - 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 + + # NEW: Use composite action for LaTeX setup + - name: Install LaTeX Dependencies + uses: quantecon/actions/setup-latex@main + + # NEW: Use composite action for building - name: Build HTML - shell: bash -l {0} - run: | - jb build lectures --path-output ./ -W --keep-going + id: build + uses: quantecon/actions/build-lectures@main + with: + builder: 'html' + source-dir: 'lectures' + extra-args: '-W --keep-going' + - name: Upload Execution Reports (HTML) uses: actions/upload-artifact@v5 if: failure() with: name: execution-reports path: _build/html/reports + - name: Upload "_build" folder (cache) uses: actions/upload-artifact@v5 with: name: build-cache path: _build - include-hidden-files: true \ No newline at end of file + include-hidden-files: true From 95044aabf0e7efaf838f054c1703a9f2d86b8f5b Mon Sep 17 00:00:00 2001 From: mmcky Date: Fri, 7 Nov 2025 15:09:40 +1100 Subject: [PATCH 2/3] Fix: Remove activate-environment parameter The setup-lecture-env action hardcodes 'quantecon' as the environment name, so this parameter is not needed and was causing a warning. --- .github/workflows/cache.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/cache.yml b/.github/workflows/cache.yml index f8cfdc3..664176a 100644 --- a/.github/workflows/cache.yml +++ b/.github/workflows/cache.yml @@ -17,7 +17,6 @@ jobs: with: python-version: '3.13' environment-file: 'environment.yml' - activate-environment: 'quantecon' - name: graphviz Support # TODO: required? run: | From 9ac3d434bfc479bccbed0451d5016173a3ed693a Mon Sep 17 00:00:00 2001 From: mmcky Date: Fri, 7 Nov 2025 15:10:45 +1100 Subject: [PATCH 3/3] Migrate ci.yml to use composite actions - Replace conda setup with setup-lecture-env - Replace manual LaTeX install with setup-latex - Replace manual jb builds with build-lectures (PDF, Jupyter, HTML) - Replace manual Netlify deploy with deploy-netlify - Benefits: Automatic caching, cleaner workflow, consistent with cache.yml --- .github/workflows/ci.yml | 92 ++++++++++++++++++++++++---------------- 1 file changed, 56 insertions(+), 36 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4806928..513efa1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,37 +6,30 @@ jobs: steps: - name: Checkout uses: actions/checkout@v5 - - name: Setup Anaconda - uses: conda-incubator/setup-miniconda@v3 + + # NEW: Use composite action for environment setup + - name: Setup Lecture Environment + uses: quantecon/actions/setup-lecture-env@main with: - auto-update-conda: true - auto-activate-base: true - miniconda-version: 'latest' - python-version: "3.13" - environment-file: environment.yml - activate-environment: quantecon + python-version: '3.13' + environment-file: 'environment.yml' + - name: Graphics Support #TODO: Review if graphviz is needed run: | sudo apt-get -qq update && sudo apt-get install -y graphviz - - 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 + + # NEW: Use composite action for LaTeX setup + - name: Install LaTeX Dependencies + uses: quantecon/actions/setup-latex@main + - 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: @@ -44,46 +37,73 @@ jobs: branch: main name: build-cache path: _build + # Build Assets (Download Notebooks and PDF via LaTeX) + # NEW: Use composite action for PDF build - name: Build PDF from LaTeX + id: build-pdf + uses: quantecon/actions/build-lectures@main + with: + builder: 'pdflatex' + source-dir: 'lectures' + extra-args: '-n --keep-going' + + - name: Copy LaTeX PDF for GH-PAGES shell: bash -l {0} run: | - jb build lectures --builder pdflatex --path-output ./ -n --keep-going mkdir -p _build/html/_pdf cp -u _build/latex/*.pdf _build/html/_pdf + - name: Upload Execution Reports (LaTeX) uses: actions/upload-artifact@v5 if: failure() with: - name: execution-reports + name: execution-reports-latex path: _build/latex/reports + + # NEW: Use composite action for Jupyter build - name: Build Download Notebooks (sphinx-tojupyter) + id: build-jupyter + uses: quantecon/actions/build-lectures@main + with: + builder: 'jupyter' + source-dir: 'lectures' + extra-args: '' + + - name: Copy Download Notebooks for GH-PAGES shell: bash -l {0} run: | - jb build lectures --path-output ./ --builder=custom --custom-builder=jupyter 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: Remove doctrees cache + run: rm -r _build/.doctrees + + # NEW: Use composite action for HTML build - name: Build HTML - shell: bash -l {0} - run: | - rm -r _build/.doctrees - jb build lectures --path-output ./ -nW --keep-going + id: build-html + uses: quantecon/actions/build-lectures@main + with: + builder: 'html' + source-dir: 'lectures' + extra-args: '-nW --keep-going' + - name: Upload Execution Reports (HTML) uses: actions/upload-artifact@v5 if: failure() with: - name: execution-reports + name: execution-reports-html path: _build/html/reports + + # NEW: Use composite action for Netlify deployment - name: Preview Deploy to Netlify - uses: nwtgck/actions-netlify@v3.0 + uses: quantecon/actions/deploy-netlify@main with: - publish-dir: '_build/html/' - production-branch: main + netlify-auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }} + netlify-site-id: ${{ secrets.NETLIFY_SITE_ID }} + build-dir: ${{ steps.build-html.outputs.build-path }} + production: 'false' github-token: ${{ secrets.GITHUB_TOKEN }} - deploy-message: "Preview Deploy from GitHub Actions" - env: - NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} - NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}