-
-
Notifications
You must be signed in to change notification settings - Fork 30
141 lines (141 loc) · 5.45 KB
/
ci.yml
File metadata and controls
141 lines (141 loc) · 5.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
name: Build Project [using jupyter-book]
on: [pull_request]
jobs:
preview:
runs-on: "runs-on=${{ github.run_id }}/family=g4dn.2xlarge/image=quantecon_ubuntu2404/disk=large"
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0 # Fetch full git history for changelog feature
- 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: Check nvidia Drivers
shell: bash -l {0}
run: nvidia-smi
- name: Install JAX and Numpyro
shell: bash -l {0}
run: |
pip install -U "jax[cuda13]"
pip install numpyro
python scripts/test-jax-install.py
# === Benchmark Tests (Bare Metal, Jupyter, Jupyter-Book) ===
- name: Run Hardware Benchmarks (Bare Metal)
shell: bash -l {0}
run: |
echo "=== Bare Metal Python Script Execution ==="
python scripts/benchmark-hardware.py
mkdir -p benchmark_results
mv benchmark_results_baremetal.json benchmark_results/
- name: Run Jupyter Notebook Benchmark (via nbconvert)
shell: bash -l {0}
run: |
echo "=== Jupyter Kernel Execution ==="
cd scripts
jupyter nbconvert --to notebook --execute benchmark-jupyter.ipynb --output benchmark-jupyter-executed.ipynb
echo "Notebook executed successfully"
cd ..
mv scripts/benchmark_results_jupyter.json benchmark_results/
- name: Run Jupyter-Book Benchmark
shell: bash -l {0}
run: |
echo "=== Jupyter-Book Execution ==="
# Build just the benchmark file using jupyter-book
mkdir -p benchmark_test
cp scripts/benchmark-jupyterbook.md benchmark_test/
# Create minimal _config.yml
echo "title: Benchmark Test" > benchmark_test/_config.yml
echo "execute:" >> benchmark_test/_config.yml
echo " execute_notebooks: force" >> benchmark_test/_config.yml
# Create minimal _toc.yml
echo "format: jb-book" > benchmark_test/_toc.yml
echo "root: benchmark-jupyterbook" >> benchmark_test/_toc.yml
# Build
jb build benchmark_test --path-output benchmark_build/
echo "Jupyter-Book build completed successfully"
# Move JSON results if generated
if [ -f benchmark_test/benchmark_results_jupyterbook.json ]; then
mv benchmark_test/benchmark_results_jupyterbook.json benchmark_results/
elif [ -f benchmark_results_jupyterbook.json ]; then
mv benchmark_results_jupyterbook.json benchmark_results/
fi
- name: Collect and Upload Benchmark Results
uses: actions/upload-artifact@v5
with:
name: benchmark-results
path: benchmark_results/
- name: Display Benchmark Results
shell: bash -l {0}
run: |
echo "=== Benchmark Results Summary ==="
for f in benchmark_results/*.json; do
echo "--- $f ---"
cat "$f"
echo ""
done
- 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 Download Notebooks (sphinx-tojupyter)
shell: bash -l {0}
run: |
jb build lectures --path-output ./ --builder=custom --custom-builder=jupyter -n -W --keep-going
mkdir -p _build/html/_notebooks
cp -u _build/jupyter/*.ipynb _build/html/_notebooks
- name: Build PDF from LaTeX
shell: bash -l {0}
run: |
jb build lectures --builder pdflatex --path-output ./ -n -W --keep-going
mkdir _build/html/_pdf
cp -u _build/latex/*.pdf _build/html/_pdf
# Final Build of HTML
- 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@v5
if: failure()
with:
name: execution-reports
path: _build/html/reports
- name: Preview Deploy to Netlify
uses: nwtgck/actions-netlify@v3
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 }}