Skip to content

CI

CI #793

Workflow file for this run

name: CI
on:
push:
branches:
- master
pull_request:
branches:
- master
schedule:
- cron: "9 16 * * 1"
jobs:
build:
defaults:
run:
shell: bash -l {0}
strategy:
fail-fast: false
matrix:
cfg:
- conda-env: psi
python-version: 3.7
label: Psi4-1.5
runs-on: ubuntu-latest
pytest: ""
- conda-env: psi-nightly
python-version: "3.10"
label: Psi4-1.6
runs-on: ubuntu-latest
pytest: ""
- conda-env: psi-cf
python-version: "3.12"
label: Psi4-1.8
runs-on: windows-latest
pytest: "-k 'not (hes2 or qchem)'"
- conda-env: torchani
python-version: 3.8
label: ANI
runs-on: ubuntu-latest
pytest: ""
- conda-env: openmm
python-version: 3.8
label: OpenMM
runs-on: ubuntu-latest
pytest: ""
- conda-env: xtb
python-version: "3.10"
label: xTB
runs-on: ubuntu-latest
pytest: ""
- conda-env: qcore
python-version: 3.7
label: QCore
runs-on: ubuntu-latest
pytest: ""
- conda-env: nwchem
python-version: 3.8
label: NWChem70
runs-on: ubuntu-20.04
pytest: ""
# formerly NWChem v6.6 with python-version: 3.6 & runs-on: ubuntu-16.04 but ubuntu env retired by GH Sep 2021
- conda-env: nwchem-cf
python-version: 3.12
label: NWChem
runs-on: ubuntu-latest
pytest: ""
- conda-env: mrchem
python-version: 3.8
label: MRChem
runs-on: ubuntu-latest
pytest: ""
- conda-env: adcc
python-version: 3.8
label: ADCC
runs-on: ubuntu-latest
pytest: ""
- conda-env: opt-disp
python-version: 3.8
label: optimization-dispersion
runs-on: ubuntu-latest
pytest: ""
- conda-env: opt-disp-cf
python-version: 3.11
label: optimization-dispersion
runs-on: windows-latest
pytest: "-k 'not (hes2 or qchem)'"
- conda-env: mace
python-version: "3.10"
label: MACE
runs-on: ubuntu-latest
pytest: ""
- conda-env: aimnet2
python-version: 3.11
label: AIMNET2
runs-on: ubuntu-latest
pytest: ""
name: "🐍 ${{ matrix.cfg.python-version }} • ${{ matrix.cfg.label }} • ${{ matrix.cfg.runs-on }}"
runs-on: ${{ matrix.cfg.runs-on }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Create Environment
uses: conda-incubator/setup-miniconda@v2
with:
activate-environment: test
environment-file: devtools/conda-envs/${{ matrix.cfg.conda-env }}.yaml
python-version: ${{ matrix.cfg.python-version }}
auto-activate-base: false
show-channel-urls: true
miniforge-variant: Mambaforge
use-mamba: true
add-pip-as-python-dependency: true
# note: conda-forge chnl req'd for Mambaforge, but we'll spec in file, not here `channels: conda-forge,...`
# note: any activate/deactivate use the conda cmd. other cmds use mamba cmd.
- name: Special Config - NWChem
if: "(matrix.cfg.label == 'NWChem70')"
run: |
sudo apt-get -y install nwchem
- name: Special Config - QCore
if: "(matrix.cfg.label == 'QCore')"
run: |
qcore --accept-license
- name: Special Config - QCElemental Dep
if: false
run: |
conda remove qcelemental --force
python -m pip install 'git+https://github.com/MolSSI/QCElemental.git@loriab-patch-2' --no-deps
# note: conda remove --force, not mamba remove --force b/c https://github.com/mamba-org/mamba/issues/412
# alt. is micromamba but not yet ready for setup-miniconda https://github.com/conda-incubator/setup-miniconda/issues/75
- name: Special Config - QCEngine Dep
if: "(startsWith(matrix.cfg.label, 'Psi4')) || (matrix.cfg.label == 'ADCC') || (matrix.cfg.label == 'optimization-dispersion')"
run: |
conda remove qcengine --force
# QCEngine CI and Psi4 are circularly dependent, so a hack is in order
- name: Special Config - Faux Pydantic Upgrade
if: "((matrix.cfg.label == 'Psi4-1.6') || (matrix.cfg.label == 'optimization-dispersion')) && (runner.os != 'Windows')"
run: |
sed -i s/from\ pydantic\ /from\ pydantic.v1\ /g ${CONDA_PREFIX}/lib/python${{ matrix.cfg.python-version }}/site-packages/psi4/driver/*py
- name: Environment Information
run: |
mamba info
mamba list
- name: Install QCEngine
run: |
python -m pip install . --no-deps
- name: QCEngineRecords
if: "(matrix.cfg.label != 'Psi4-1.6')"
run: |
qcengine info
export QCER_VER=`python -c "import qcengine.testing; print(qcengine.testing.QCENGINE_RECORDS_COMMIT)"`
pip install git+https://github.com/MolSSI/QCEngineRecords.git@${QCER_VER}#egg=qcenginerecords
python -c "import qcengine; print(qcengine.config.global_repr())"
- name: PyTest
run: |
pytest -rws -v ${{ matrix.cfg.pytest }} --cov=qcengine --color=yes --cov-report=xml qcengine/
- name: CodeCov
uses: codecov/codecov-action@v3
release_sphinx:
needs: [build]
defaults:
run:
shell: bash -l {0}
strategy:
fail-fast: false
matrix:
cfg:
- conda-env: docs-cf
python-version: 3.8
label: Sphinx
runs-on: ubuntu-latest
name: "🐍 ${{ matrix.cfg.python-version }} • ${{ matrix.cfg.label }}"
runs-on: ${{ matrix.cfg.runs-on }}
steps:
- uses: actions/checkout@v3
- name: Create Environment
uses: conda-incubator/setup-miniconda@v2
with:
activate-environment: test
environment-file: devtools/conda-envs/${{ matrix.cfg.conda-env }}.yaml
python-version: ${{ matrix.cfg.python-version }}
auto-activate-base: false
miniforge-variant: Mambaforge
use-mamba: true
add-pip-as-python-dependency: true
channels: conda-forge
- name: Environment Information
run: |
mamba info
mamba list --show-channel-urls
- name: Build Documentation
run: |
python -m pip install . --no-deps
cd docs
make html
- name: GitHub Pages Deploy
uses: JamesIves/[email protected]
if: github.event_name == 'push' && github.repository == 'MolSSI/QCEngine' && ( startsWith( github.ref, 'refs/tags/' ) || github.ref == 'refs/heads/master' )
with:
branch: gh-pages
folder: docs/build/html