forked from cta-observatory/nectarchain
-
Notifications
You must be signed in to change notification settings - Fork 0
206 lines (181 loc) · 6.26 KB
/
ci.yml
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
name: CI
# by not building all branches on push, we avoid the duplicated builds in PRs
on:
workflow_dispatch:
push:
branches:
- main
tags:
- "**"
pull_request:
env:
NUMBA_NUM_THREADS: 1
MPLBACKEND: Agg
PYTEST_ADDOPTS: --color=yes
jobs:
lint:
runs-on: ubuntu-latest
name: Lint
steps:
- name: Check out source repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python environment
uses: actions/setup-python@v5
with:
python-version: "3.9"
- name: Runs pre-commit hooks
uses: pre-commit/[email protected]
with:
extra_args: --files $(git diff origin/main --name-only)
tests:
runs-on: ${{ matrix.os }}
needs: lint
strategy:
matrix:
include:
- os: "ubuntu-latest"
python-version: "3.9"
ctapipe-version: "v0.19.3"
install-method: "mamba"
- os: "ubuntu-latest"
python-version: "3.10"
ctapipe-version: "v0.19.3"
install-method: "mamba"
- os: "ubuntu-latest"
python-version: "3.10"
ctapipe-version: "v0.19.3"
install-method: "pip"
- os: "ubuntu-latest"
python-version: "3.11"
ctapipe-version: "v0.19.3"
install-method: "mamba"
- os: "ubuntu-latest"
python-version: "3.11"
ctapipe-version: "v0.19.3"
install-method: "pip"
extra-args: ["codecov"]
# macos 14 image is arm64 based
- os: "macos-14"
python-version: "3.11"
ctapipe-version: "v0.19.3"
install-method: "mamba"
env :
DISPLAY: ":99.0"
QT_SELECT: "qt5"
defaults:
run:
# We need login shells (-l) for micromamba to work.
shell: bash -leo pipefail {0}
steps:
- name: Install dependencies for Qt on Ubuntu
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install freeglut3-dev
- name: Install dependencies for Qt on mac-OS
if: matrix.os == 'macos-14'
run: |
brew install pyqt
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set Python version
env:
PYTHON_VERSION: ${{ matrix.python-version }}
run: |
sed -i -e "s/- python=.*/- python=$PYTHON_VERSION/g" environment.yml
- name: Setup xvfb for X11 display
if: matrix.os == 'ubuntu-latest'
run: |
# Stuff copied wildly from several stackoverflow posts
sudo apt-get install -y xvfb libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xinput0 libxcb-xfixes0 libxcb-shape0 libglib2.0-0 libgl1-mesa-dev
sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
# start xvfb in the background
sudo /usr/bin/Xvfb $DISPLAY -screen 0 1280x1024x24 &
- name: Mamba setup
if: matrix.install-method == 'mamba'
uses: mamba-org/setup-micromamba@v2
with:
environment-name: "ci"
environment-file: environment.yml
- name: Python setup
if: matrix.install-method == 'pip'
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
check-latest: true
- name: Install dependencies
env:
CTAPIPE_VERSION: ${{ matrix.ctapipe-version }}
run: |
python --version
echo "Installing additional pip packages"
# we install ctapipe using pip to be able to select any commit, e.g. the current main
pip install \
"git+https://github.com/cta-observatory/ctapipe@$CTAPIPE_VERSION"
if [ "${{ matrix.os }}" == "macos-14" ]; then
# nectarchain installation with pip
if [ "${{ matrix.install-method }}" == "pip" ]; then
pip install -e .
else
pip install --no-deps -e .
fi
# install with pip dependencies for pytest (NB : when we will use python > 3.10 for all configs, use tomllib instead of toml)
pip install toml
python -c "import toml, sys; print('\n'.join(toml.load('pyproject.toml')['project']['optional-dependencies']['test']))" | xargs pip install
else
echo "pip install -e ."
pip install -e .[test]
fi
- name: Check pyqt version and installation
run: |
if [ "${{ matrix.install-method }}" == "pip" ]; then
pip list | grep PyQt
else
micromamba list -n ci qt
pip list | grep PyQt
fi
- name: Check mac-os installation
if: matrix.os == 'macos-14'
run: |
micromamba list -n ci | grep qt
eval "$(micromamba shell hook --shell=bash)"
micromamba activate ci
otool -L $(python -c "import PyQt5.QtCore; print(PyQt5.QtCore.__file__)")
- name: Tests
run: |
pytest -n auto --dist loadscope --cov=nectarchain --cov-report=xml --ignore=src/nectarchain/user_scripts
- name: Upload coverage reports to Codecov with GitHub Action
uses: codecov/codecov-action@v5
if: contains(matrix.extra-args, 'codecov')
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
# - name: Start SSH Debugging Session
# if: ${{ failure() }}
# uses: mxschmitt/action-tmate@v3
docs:
needs: lint
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.9
- name: Install dependencies for Qt 5 on Ubuntu
run: |
sudo apt-get update
sudo apt-get install freeglut3-dev
- name: Install doc dependencies
run: |
pip install -e .[docs]
# git describe --tags
python -c 'import nectarchain; print(nectarchain.__version__)'
- name: Build docs
run: make -C docs html