diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4806928..da3094f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,37 +6,28 @@ jobs: steps: - name: Checkout uses: actions/checkout@v5 - - name: Setup Anaconda - uses: conda-incubator/setup-miniconda@v3 + + # Use unified composite action for complete environment setup + - name: Setup Complete Lecture Environment + uses: quantecon/actions/setup-lecture-env-full@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' + latex-requirements-file: 'latex-requirements.txt' + environment-name: 'quantecon' + - 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 + - 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 +35,68 @@ jobs: branch: main name: build-cache path: _build + # Build Assets (Download Notebooks and PDF via LaTeX) + # Use composite action for PDF build - name: Build PDF from LaTeX - shell: bash -l {0} + uses: quantecon/actions/build-lectures@main + with: + builder: 'pdflatex' + source-dir: 'lectures' + extra-args: '-n --keep-going' + + - name: Copy PDF to HTML output 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 + + # Use composite action for notebook build - name: Build Download Notebooks (sphinx-tojupyter) - shell: bash -l {0} + uses: quantecon/actions/build-lectures@main + with: + builder: 'jupyter' + source-dir: 'lectures' + + - name: Copy Notebooks to HTML output 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 + # BUG: rm .doctrees 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 ./ -nW --keep-going + + # Use composite action for HTML build + - name: Build HTML (Jupyter Book) + 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 + + # 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 - 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 }} + build-dir: '_build/html/' + netlify-auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }} + netlify-site-id: ${{ secrets.NETLIFY_SITE_ID }} + production: 'false' + message: 'Preview Deploy from GitHub Actions' diff --git a/lectures/intro.md b/lectures/intro.md index 7b3607e..5f055d9 100644 --- a/lectures/intro.md +++ b/lectures/intro.md @@ -11,7 +11,9 @@ kernelspec: # (TEST) A First Course in Quantitative Economics with Python -This lecture series provides an introduction to quantitative economics using Python. +This lecture series provides an introduction to quantitative economics using Python. + +**Testing local cache hit on PR #4** - This small edit should trigger a rebuild that uses the local cache created in the first run. ```{tableofcontents} ```