Skip to content

Implement MD workflows #13103

Implement MD workflows

Implement MD workflows #13103

Workflow file for this run

name: tests
on:
push:
branches: [main]
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
tests-core:
strategy:
fail-fast: true
matrix:
python-version: ["3.9", "3.12"]
os: [ubuntu-latest, windows-latest]
exclude:
- os: windows-latest
python-version: "3.9"
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash -l {0}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: tests/requirements**.txt
- name: Install pip packages
run: |
pip install uv
uv pip install --system -r tests/requirements.txt "quacc[dev] @ ."
- name: Run tests with pytest (w/ coverage)
if: matrix.python-version != '3.12'
run: pytest --durations=10 --cov=quacc --cov-report=xml
- name: Run tests with pytest (w/o coverage)
if: matrix.python-version == '3.12'
run: pytest --durations=10
- name: Upload code coverage report to Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ github.job }} ${{ matrix.python-version }} ${{ matrix.os }} coverage report
path: "coverage.xml"
retention-days: 1
tests-engines:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
wflow_engine: [covalent, dask, parsl, prefect, redun, jobflow]
defaults:
run:
shell: bash -l {0}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.wflow_engine == 'covalent' && '3.10' || '3.11' }}
cache: pip
cache-dependency-path: tests/requirements**.txt
- name: Set up conda
if: matrix.wflow_engine == 'dask'
uses: conda-incubator/setup-miniconda@v3
with:
python-version: "3.11"
activate-environment: quacc-env
- name: Install conda packages
if: matrix.wflow_engine == 'dask'
run: conda install -c conda-forge qe
- name: Install pip packages
run: |
pip install uv
uv pip install --system -r tests/requirements.txt -r tests/requirements-${{ matrix.wflow_engine }}.txt -r tests/requirements-phonons.txt "quacc[dev] @ ."
- name: Start Covalent server
if: matrix.wflow_engine == 'covalent'
run: covalent start
- name: Run tests with pytest
run: pytest --durations=10 tests/${{ matrix.wflow_engine }} --cov=quacc --cov-report=xml
- name: Combine Coverage Reports
if: matrix.wflow_engine == 'dask'
run: |
coverage combine -a
coverage xml
- name: Upload code coverage report to Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ github.job }} ${{ matrix.wflow_engine }} coverage report
path: "coverage.xml"
retention-days: 1
tests-psi4:
strategy:
fail-fast: true
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
cache-dependency-path: tests/requirements**.txt
- name: Set up conda
uses: conda-incubator/setup-miniconda@v3
with:
python-version: ${{ matrix.python-version }}
activate-environment: quacc-env
- name: Install conda packages
run: |
conda install -n base conda-libmamba-solver
conda install psi4 -c conda-forge --solver libmamba
- name: Install pip packages
run: |
pip install uv
uv pip install --system -r tests/requirements.txt "quacc[dev] @ ."
- name: Run tests with pytest
run: pytest -k 'psi4' --durations=10 --cov=quacc --cov-report=xml
- name: Upload code coverage report to Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ github.job }} coverage report
path: "coverage.xml"
retention-days: 1
tests-defects-phonons-espresso:
strategy:
fail-fast: true
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
cache-dependency-path: tests/requirements**.txt
- name: Set up conda
uses: conda-incubator/setup-miniconda@v3
with:
python-version: ${{ matrix.python-version }}
activate-environment: quacc-env
- name: Install conda packages
run: conda install -c conda-forge qe
- name: Install pip packages
run: |
pip install uv
uv pip install --system -r tests/requirements.txt -r tests/requirements-defects.txt -r tests/requirements-phonons.txt "quacc[dev] @ ."
- name: Run tests with pytest
run: pytest -k 'defects or phonon or espresso' --durations=10 --cov=quacc --cov-report=xml
- name: Upload code coverage report to Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ github.job }} coverage report
path: "coverage.xml"
retention-days: 1
tests-tblite-dftbplus:
strategy:
fail-fast: true
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
cache-dependency-path: tests/requirements**.txt
- name: Set up conda
uses: conda-incubator/setup-miniconda@v3
with:
python-version: ${{ matrix.python-version }}
activate-environment: quacc-env
- name: Install conda packages
run: conda install -c conda-forge dftbplus
- name: Install pip packages
run: |
pip install uv
uv pip install --system -r tests/requirements.txt -r tests/requirements-tblite.txt -r tests/requirements-phonons.txt "quacc[dev] @ ."
- name: Run tests with pytest
run: pytest -k 'dftb or tblite' --durations=10 --cov=quacc --cov-report=xml
- name: Upload code coverage report to Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ github.job }} coverage report
path: "coverage.xml"
retention-days: 1
tests-qchem-sella:
strategy:
fail-fast: true
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
cache-dependency-path: tests/requirements**.txt
- name: Set up conda
uses: conda-incubator/setup-miniconda@v3
with:
python-version: ${{ matrix.python-version }}
activate-environment: quacc-env
- name: Install conda packages
run: conda install -c conda-forge openbabel
- name: Install pip packages
run: |
pip install uv
uv pip install --system -r tests/requirements.txt -r tests/requirements-sella.txt "quacc[dev] @ ."
- name: Run tests with pytest
run: pytest -k 'qchem or sella' --durations=10 --cov=quacc --cov-report=xml
- name: Upload code coverage report to Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ github.job }} coverage report
path: "coverage.xml"
retention-days: 1
tests-mlps:
strategy:
fail-fast: true
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
cache-dependency-path: tests/requirements**.txt
- name: Install pip packages
run: |
pip install uv
uv pip install --system -r tests/requirements.txt -r tests/requirements-mlp.txt -r tests/requirements-newtonnet.txt -r tests/requirements-sella.txt -r tests/requirements-phonons.txt "quacc[dev] @ ."
- name: Run tests with pytest
run: pytest -k 'mlp or newtonnet' --durations=10 --cov=quacc --cov-report=xml
- name: Upload code coverage report to Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ github.job }} coverage report
path: "coverage.xml"
retention-days: 1
tests-mp:
strategy:
fail-fast: true
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
cache-dependency-path: tests/requirements**.txt
- name: Install pip packages
run: |
pip install uv
uv pip install --system -r tests/requirements.txt -r tests/requirements-mp.txt "quacc[dev] @ ."
- name: Run tests with pytest
run: pytest -k 'mp_' --durations=10 --cov=quacc --cov-report=xml
- name: Upload code coverage report to Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ github.job }} coverage report
path: "coverage.xml"
retention-days: 1
codecov:
needs:
- tests-core
- tests-engines
- tests-psi4
- tests-defects-phonons-espresso
- tests-tblite-dftbplus
- tests-qchem-sella
- tests-mlps
- tests-mp
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download coverage artifacts
uses: actions/download-artifact@v4
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
fail_ci_if_error: true