-
Notifications
You must be signed in to change notification settings - Fork 9
135 lines (114 loc) · 3.51 KB
/
ci.yaml
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
name: "CI"
on:
# Allow for workflows to be manuallly triggered
workflow_dispatch:
pull_request:
branches:
- main
push:
branches:
- main
schedule:
# At 07:00 UTC on Monday and Thursday.
- cron: "0 7 * * *"
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 }}"
strategy:
fail-fast: false
matrix:
os: ['ubuntu-latest', macos-latest]
pydantic-version: [">1"]
python-version:
- "3.10"
- "3.11"
- "3.12"
include:
# Note: we still need to add support for macos-13
# see https://github.com/OpenFreeEnergy/openfe/issues/842
- os: "ubuntu-latest"
python-version: "3.11"
pydantic-version: "<2"
env:
OE_LICENSE: ${{ github.workspace }}/oe_license.txt
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: "Setup Micromamba"
uses: mamba-org/setup-micromamba@v1
with:
micromamba-binary-path: ~/.local/bin/micromamba
environment-file: environment.yml
environment-name: gufe
cache-environment: true
cache-downloads: true
create-args: >-
python=${{ matrix.python-version }}
init-shell: bash
- 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 gufe; print(gufe.__version__)"
- name: "Environment Information"
run: |
micromamba info
micromamba list
- name: "Run tests"
run: |
pytest -n 2 -v --cov=gufe --cov-report=xml
- name: codecov
if: ${{ github.repository == 'OpenFreeEnergy/gufe'
&& github.event != 'schedule' }}
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: coverage.xml
fail_ci_if_error: False
verbose: True
package_build_and_test:
runs-on: ubuntu-latest
name: "package build and install test"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: "Setup Micromamba"
uses: mamba-org/setup-micromamba@v1
with:
environment-file: environment.yml
environment-name: gufe
cache-environment: true
cache-downloads: true
create-args: >-
python=${{ matrix.python-version }}
init-shell: bash
- name: "install extra deps"
run: pip install pipx wheel twine readme-renderer
- name: "build sdist"
run: pipx run build --sdist --outdir dist
- name: "check package build"
run: |
dist=$(ls -t1 dist/gufe-*tar.gz | head -n1)
test -n "${dist}" || { echo "no distribution found"; exit 1; }
twine check $dist
- name: "install from source dist"
working-directory: ./dist
run: python -m pip install gufe-*tar.gz
- name: "install checks"
working-directory: ./dist
run: |
pip check
python -Ic "import gufe; print(gufe.__version__)"
- name: "run tests"
working-directory: ./dist
run: pytest -n auto --pyargs gufe