Nightly build #749
This file contains 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: Nightly build | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: '30 4 * * *' | |
defaults: | |
run: | |
shell: bash -l {0} | |
jobs: | |
pytests: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
include: | |
- qutip-version: '4' | |
qutip-branch: 'qutip-4.7.X' | |
- qutip-version: '5' | |
qutip-branch: 'master' | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: gaurav-nelson/github-action-markdown-link-check@v1 | |
with: | |
use-quiet-mode: 'yes' | |
folder-path: tutorials-v${{ matrix.qutip-version }} | |
#use config file to define 403 and 405 errors as valid links | |
#(APS blocks this link check) | |
config-file: mlc_config.json | |
- name: Setup Mambaforge | |
uses: conda-incubator/setup-miniconda@v2 | |
with: | |
miniforge-variant: Mambaforge | |
miniforge-version: latest | |
activate-environment: test-environment-v${{ matrix.qutip-version }} | |
use-mamba: true | |
- name: Get Date | |
id: get-date | |
run: echo "::set-output name=today::$(/bin/date -u '+%Y%m%d')" | |
shell: bash | |
- name: Cache Conda env | |
uses: actions/cache@v2 | |
with: | |
path: ${{ env.CONDA }}/envs | |
key: conda-${{ runner.os }}--${{ runner.arch }}--${{ steps.get-date.outputs.today }}-${{ hashFiles('test_environment.yml') }}-${{ env.CACHE_NUMBER }}-qutip-${{ matrix.qutip-version }} | |
env: | |
# Increase this value to reset cache if etc/example-environment.yml has not changed | |
CACHE_NUMBER: 0 | |
id: cache | |
- name: Install environment | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: mamba env update -n test-environment-v${{ matrix.qutip-version }} -f test_environment-v${{ matrix.qutip-version }}.yml | |
- name: Install QuTiP | |
run: | | |
pip install --upgrade pip | |
python -m pip install jax jax[cpu] equinox diffrax | |
git clone -b ${{ matrix.qutip-branch }} https://github.com/qutip/qutip.git | |
cd qutip | |
pip install -r requirements.txt | |
pip install . | |
cd .. | |
python -m pip install git+https://github.com/qutip/qutip-qip | |
python -m pip install --no-deps git+https://github.com/qutip/qutip-jax | |
git clone -b master https://github.com/qutip/qutip-qtrl.git | |
cd qutip-qtrl | |
# install qutip-qtrl without deps because it requires qutip 5.0.0a1 | |
pip install --no-deps -e . | |
- name: Install ffmpeg & LaTeX | |
run: | | |
sudo apt update | |
sudo apt install ffmpeg | |
sudo apt install texlive-latex-extra | |
- name: Convert Notebooks | |
run: | | |
rm -rf notebooks | |
mkdir notebooks | |
cp -r tutorials-v${{ matrix.qutip-version }}/* notebooks | |
cd notebooks | |
find . -name '*.md' -exec jupytext --to notebook {} + | |
find . -name '*.md' -delete | |
- name: Check PEP8 formatting | |
run: | | |
pip install nbqa flake8 | |
find . -name '*.ipynb' -exec nbqa flake8 --max-line-length=88 {} + | |
- name: Run tests | |
run: | | |
jupyter kernel & | |
cd notebooks | |
find . -name '*.ipynb' -exec pytest --nbmake --overwrite --nbmake-timeout=600 {} + | |
rm template.ipynb | |
- name: Create Notebook Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: executed-notebooks-v${{ matrix.qutip-version }} | |
path: | | |
notebooks/*.ipynb | |
notebooks/**/*.ipynb |