-
Notifications
You must be signed in to change notification settings - Fork 18
180 lines (155 loc) · 5.13 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
name: CI
# by not building all branches on push, we avoid the duplicated builds in PRs
on:
workflow_dispatch:
push:
# TODO
# Remove comment: just a test to force CI on 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/action@v3.0.1
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"
# 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
- 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: 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: 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: Instal QT and setup environment on macOS
if: matrix.os == 'macos-14'
run: |
brew install pyqt@6
echo "DYLD_FRAMEWORK_PATH=$(brew --prefix qt)/lib" >> $GITHUB_ENV
- 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"
echo "pip install -e ."
pip install -e .[test]
- name: Check pyqt version
run: |
pip list | grep PyQt
- 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
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
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