-
Notifications
You must be signed in to change notification settings - Fork 0
155 lines (140 loc) · 4.61 KB
/
CI.yaml
File metadata and controls
155 lines (140 loc) · 4.61 KB
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
name: CI
on:
# GitHub has started calling new repo's first branch "main" https://github.com/github/renaming
# Existing codes likely still have "master" as the primary branch
# Both are tracked here to keep legacy and new codes working
push:
branches:
- "main"
paths-ignore:
- '**/*.md'
- '**/*.rst'
- '**/*.ipynb'
- '**/*.yml'
- '**/*.yaml'
- 'docs/**'
- 'paper/**'
- 'examples/**'
- 'logos/**'
pull_request:
branches:
- "main"
paths-ignore:
- '**/*.md'
- '**/*.rst'
- '**/*.ipynb'
- '**/*.yml'
- '**/*.yaml'
- 'docs/**'
- 'paper/**'
- 'examples/**'
- 'logos/**'
schedule:
# Nightly tests run on master by default:
# Scheduled workflows run on the latest commit on the default or base branch.
# (from https://help.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events-schedule)
- cron: "0 9 * * MON"
workflow_dispatch:
jobs:
test:
name: Test on ${{ matrix.cfg.os }}, Python ${{ matrix.cfg.python-version }}
if: >
!(
(github.event_name == 'push' && contains(github.event.head_commit.message, '[skip ci]'))
||
(github.event_name == 'pull_request' && contains(github.event.pull_request.title, '[skip ci]'))
||
(github.event_name == 'pull_request' && contains(github.event.pull_request.head.ref, 'skip-ci'))
)
runs-on: ${{ matrix.cfg.os }}
strategy:
fail-fast: false # do not cancel all in-progress jobs if any job variation fails
matrix:
cfg:
- { os: ubuntu-latest, python-version: "3.10"}
- { os: ubuntu-latest, python-version: "3.11"}
- { os: ubuntu-latest, python-version: "3.12"}
- { os: macos-latest, python-version: "3.10"}
- { os: macos-latest, python-version: "3.11"}
- { os: macos-latest, python-version: "3.12"}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Additional info about the build
shell: bash
run: |
uname -a
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.cfg.python-version }}
- name: Setup conda env
uses: mamba-org/setup-micromamba@v1
with:
environment-file: devtools/conda-envs/test_env.yaml
environment-name: test
condarc: |
channels:
- uibcdf
- conda-forge
- ambermd
channel_priority: strict
create-args: >-
python=${{ matrix.cfg.python-version }}
- name: Info conda
shell: bash -l {0}
run: |
micromamba activate test
micromamba info
micromamba list
- name: Install package
shell: bash -l {0}
run: |
python -m pip install . --no-deps
- name: Test import module
shell: bash -l {0}
run: |
echo "::group::Importing module from home directory"
cd
pwd
echo 'import molsysviewer; print("Version of the package: {}".format(molsysviewer.__version__))' | python
echo "::endgroup::"
- name: Run tests
shell: bash -l {0}
run: |
export PYTHONPATH=$PYTHONPATH:$(pwd)
# pytest -n logical -v --cov-config=.coveragerc --cov=molsysviewer --cov-report=xml --junitxml=junit.xml --color=yes
pytest -v --cov-config=.coveragerc --cov=molsysviewer --cov-report=xml --junitxml=junit.xml --color=yes
- name: JS unit tests (Node)
if: matrix.cfg.os == 'ubuntu-latest' && matrix.cfg.python-version == '3.12'
shell: bash -l {0}
run: |
cd molsysviewer/js
npm ci
npm run build
npm run test:js
npm run coverage:js
- name: Check coverage
shell: bash -l {0}
run: |
cat ./coverage.xml
if [ -f molsysviewer/js/coverage-js/lcov.info ]; then
echo "JS coverage generated"
fi
- name: Upload coverage reports to Codecov
if: matrix.cfg.os == 'ubuntu-latest' && matrix.cfg.python-version == '3.12'
uses: codecov/codecov-action@v4
with:
verbose: true
file: |
./coverage.xml
./molsysviewer/js/coverage-js/lcov.info
flags: unittests
name: codecov-${{ matrix.cfg.os }}-py${{ matrix.cfg.python-version }}
token: ${{ secrets.CODECOV_TOKEN }}
- name: Upload test results to Codecov
if: matrix.cfg.os == 'ubuntu-latest' && matrix.cfg.python-version == '3.12' && ${{ !cancelled() }}
uses: codecov/test-results-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}