Skip to content

Commit

Permalink
ENH: setup GitHub Actions (#23)
Browse files Browse the repository at this point in the history
* ENH: setup GitHub Actions

* disable cache for testing

* migrate static asset for long_run_growth lecture

* added intro -- but will need translating

* Fix warnings (business_cycle needs translating)

* add all infrastructure for lecture build

* remove publish workflow for now

* re-enable build cache
  • Loading branch information
mmcky authored Sep 16, 2024
1 parent c787bcd commit 685b5dc
Show file tree
Hide file tree
Showing 19 changed files with 4,105 additions and 3 deletions.
13 changes: 13 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file

version: 2
updates:
- package-ecosystem: github-actions
directory: /
commit-message:
prefix: ⬆️
schedule:
interval: weekly
51 changes: 51 additions & 0 deletions .github/workflows/cache.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Build Cache [using jupyter-book]
on:
push:
branches:
- main
jobs:
tests:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Anaconda
uses: conda-incubator/setup-miniconda@v3
with:
auto-update-conda: true
auto-activate-base: true
miniconda-version: 'latest'
python-version: "3.11"
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
- name: Build HTML
shell: bash -l {0}
run: |
jb build lectures --path-output ./ -W --keep-going
- name: Upload Execution Reports (HTML)
uses: actions/upload-artifact@v4
if: failure()
with:
name: execution-reports
path: _build/html/reports
- name: Upload "_build" folder (cache)
uses: actions/upload-artifact@v4
with:
name: build-cache
path: _build
89 changes: 89 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
name: Build HTML [using jupyter-book]
on: [pull_request]
jobs:
preview:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Anaconda
uses: conda-incubator/setup-miniconda@v3
with:
auto-update-conda: true
auto-activate-base: true
miniconda-version: 'latest'
python-version: "3.11"
environment-file: environment.yml
activate-environment: 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@v6
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
mkdir -p _build/html/_pdf
cp -u _build/latex/*.pdf _build/html/_pdf
- name: Upload Execution Reports (LaTeX)
uses: actions/upload-artifact@v4
if: failure()
with:
name: execution-reports
path: _build/latex/reports
- name: Build Download Notebooks (sphinx-tojupyter)
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: Build HTML
shell: bash -l {0}
run: |
rm -r _build/.doctrees
jb build lectures --path-output ./ -nW --keep-going
- name: Upload Execution Reports (HTML)
uses: actions/upload-artifact@v4
if: failure()
with:
name: execution-reports
path: _build/html/reports
- name: Preview Deploy to Netlify
uses: nwtgck/actions-netlify@v3.0
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 }}
54 changes: 54 additions & 0 deletions .github/workflows/collab.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Build Project on Google Collab (Execution)
on: [pull_request]

jobs:
test:
runs-on: ubuntu-latest-m
container:
image: us-docker.pkg.dev/colab-images/public/runtime:latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Check for dockerenv file
run: (ls /.dockerenv && echo Found dockerenv) || (echo No dockerenv)
- name: Check python version
shell: bash -l {0}
run: |
python --version
- name: Display Pip Versions
shell: bash -l {0}
run: pip list
- name: Download "build" folder (cache)
uses: dawidd6/action-download-artifact@v6
with:
workflow: cache.yml
branch: main
name: build-cache
path: _build
# Install build software
- name: Install Build Software
shell: bash -l {0}
run: |
pip install jupyter-book==0.15.1 docutils==0.17.1 quantecon-book-theme==0.7.2 sphinx-tojupyter==0.3.0 sphinxext-rediraffe==0.2.7 sphinx-exercise==0.4.1 sphinxcontrib-youtube==1.1.0 sphinx-togglebutton==0.3.1 arviz==0.13.0 sphinx_proof==0.2.0
# Build of HTML (Execution Testing)
- name: Build HTML
shell: bash -l {0}
run: |
jb build lectures --path-output ./ -n -W --keep-going
- name: Upload Execution Reports
uses: actions/upload-artifact@v4
if: failure()
with:
name: execution-reports
path: _build/html/reports
- name: Preview Deploy to Netlify
uses: nwtgck/actions-netlify@v3.0
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 }}
44 changes: 44 additions & 0 deletions .github/workflows/linkcheck.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Link Checker [Anaconda, Linux]
on:
pull_request:
types: [opened, reopened]
schedule:
# UTC 12:00 is early morning in Australia
- cron: '0 12 * * *'
jobs:
link-check-linux:
name: Link Checking (${{ matrix.python-version }}, ${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest"]
python-version: ["3.11"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Anaconda
uses: conda-incubator/setup-miniconda@v3
with:
auto-update-conda: true
auto-activate-base: true
miniconda-version: 'latest'
python-version: "3.11"
environment-file: environment.yml
activate-environment: quantecon
- name: Download "build" folder (cache)
uses: dawidd6/action-download-artifact@v6
with:
workflow: cache.yml
branch: main
name: build-cache
path: _build
- name: Link Checker
shell: bash -l {0}
run: jb build lectures --path-output=./ --builder=custom --custom-builder=linkcheck
- name: Upload Link Checker Reports
uses: actions/upload-artifact@v4
if: failure()
with:
name: linkcheck-reports
path: _build/linkcheck
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.DS_Store
lectures/_build
.ipynb_checkpoints/
.virtual_documents/
_build/*
4 changes: 2 additions & 2 deletions lectures/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,8 @@ sphinx:
index_toc.md: intro.md
tojupyter_static_file_path: ["_static"]
tojupyter_target_html: true
tojupyter_urlpath: "https://intro.quantecon.org/"
tojupyter_image_urlpath: "https://intro.quantecon.org/_static/"
tojupyter_urlpath: "https://intro.quantecon.org/" #TODO: update
tojupyter_image_urlpath: "https://intro.quantecon.org/_static/" #TODO: update
tojupyter_lang_synonyms: ["ipython", "ipython3", "python"]
tojupyter_kernels:
python3:
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added lectures/_static/lectures-favicon.ico
Binary file not shown.
Binary file added lectures/_static/qe-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 685b5dc

Please sign in to comment.