CI #4060
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: "CI" | |
on: | |
pull_request: | |
branches: | |
- main | |
# Skip CI if changed files only affect the following folders | |
# - docs: documentation changes don't need code validation | |
# See here for more details: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-excluding-paths | |
paths-ignore: | |
- "docs/*" | |
push: | |
branches: | |
- main | |
schedule: | |
# At 07:00 UTC on Monday and Thursday. | |
- cron: "0 7 * * *" | |
workflow_dispatch: | |
release: | |
types: | |
- published | |
concurrency: | |
group: "${{ github.workflow }}-${{ github.ref }}" | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: bash -l {0} | |
jobs: | |
tests: | |
runs-on: ${{ matrix.os }} | |
name: "π»-${{matrix.os }} π-${{ matrix.python-version }} ποΈ${{ matrix.pydantic-version }} oechem: ${{ matrix.openeye }}" | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ["ubuntu-latest"] | |
pydantic-version: [">1"] | |
python-version: | |
- "3.10" | |
- "3.11" | |
- "3.12" | |
openeye: ["no"] | |
include: | |
- os: "macos-latest" | |
python-version: "3.12" | |
pydantic-version: ">1" | |
- os: "ubuntu-latest" | |
python-version: "3.11" | |
pydantic-version: "<2" | |
- os: "ubuntu-latest" | |
python-version: "3.11" | |
pydantic-version: ">1" | |
openeye: "yes" | |
- os: "macos-latest" | |
python-version: "3.12" | |
pydantic-version: ">1" | |
omff-version: ">0.13" | |
openeye: ["no"] | |
env: | |
OE_LICENSE: ${{ github.workspace }}/oe_license.txt | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Get current date | |
id: date | |
run: echo "date=$(date +%Y-%m-%d)" >> "${GITHUB_OUTPUT}" | |
- name: "Setup Micromamba" | |
uses: mamba-org/setup-micromamba@v1 | |
with: | |
micromamba-version: '1.5.6-0' | |
micromamba-binary-path: ~/.local/bin/micromamba | |
environment-file: environment.yml | |
environment-name: openfe_env | |
cache-environment: true | |
cache-downloads: true | |
cache-environment-key: environment-${{ steps.date.outputs.date }} | |
cache-downloads-key: downloads-${{ steps.date.outputs.date }} | |
create-args: >- | |
python=${{ matrix.python-version }} | |
pydantic=${{ matrix.pydantic-version }} | |
init-shell: bash | |
- name: "Install OpenEye" | |
if: ${{ !github.event.pull_request.head.repo.fork | |
&& matrix.openeye == 'yes' }} | |
env: | |
OE_LICENSE_TEXT: ${{ secrets.OE_LICENSE }} | |
run: | | |
echo "${OE_LICENSE_TEXT}" > ${OE_LICENSE} | |
micromamba install -c openeye openeye-toolkits | |
python -c "import openeye; assert openeye.oechem.OEChemIsLicensed(), 'oechem license check failed!'" | |
- name: "Install GUFE from main@HEAD" | |
run: python -m pip install --no-deps git+https://github.com/OpenFreeEnergy/gufe@main | |
- name: "Install" | |
run: python -m pip install --no-deps -e . | |
- name: "Test imports" | |
run: | | |
# if we add more to this, consider changing to for + env vars | |
python -Ic "import openfe; print(openfe.__version__)" | |
- name: "Environment Information" | |
run: | | |
micromamba info | |
micromamba list | |
pip list | |
- name: "Run tests" | |
env: | |
# Set the OFE_SLOW_TESTS to True if running a Cron job | |
OFE_SLOW_TESTS: ${{ fromJSON('{"false":"false","true":"true"}')[github.event_name != 'pull_request'] }} | |
DUECREDIT_ENABLE: 'yes' | |
run: | | |
pytest -n auto -v --cov=openfe --cov=openfecli --cov-report=xml --durations=10 | |
- name: codecov-pr | |
if: ${{ github.repository == 'OpenFreeEnergy/openfe' | |
&& github.event_name == 'pull_request' }} | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
file: coverage.xml | |
fail_ci_if_error: False | |
verbose: True | |
flags: fast-tests | |
- name: codecov-merge | |
# we only want to upload a slow report if | |
# 1) it isn't a schedule run | |
# 2) it wasn't from a PR (we don't run slow tests on PRs) | |
if: ${{ github.repository == 'OpenFreeEnergy/openfe' | |
&& github.event_name != 'schedule' | |
&& github.event_name != 'pull_request' }} | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
file: coverage.xml | |
fail_ci_if_error: False | |
verbose: True | |
flags: slow-tests |