Support several NectarCAM cameras #761
Workflow file for this run
  
    
      This file contains hidden or 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 | |
| # 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@v5 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up Python environment | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.11" | |
| - 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.10" | |
| ctapipe-version: "v0.24.0" | |
| install-method: "mamba" | |
| - os: "ubuntu-latest" | |
| python-version: "3.10" | |
| ctapipe-version: "v0.24.0" | |
| install-method: "pip" | |
| - os: "ubuntu-latest" | |
| python-version: "3.11" | |
| ctapipe-version: "v0.24.0" | |
| install-method: "mamba" | |
| - os: "ubuntu-latest" | |
| python-version: "3.11" | |
| ctapipe-version: "v0.24.0" | |
| install-method: "pip" | |
| extra-args: ["codecov"] | |
| # macos 13 image is x86-based | |
| - os: "macos-13" | |
| python-version: "3.11" | |
| ctapipe-version: "v0.24.0" | |
| install-method: "mamba" | |
| # macos 14 image is arm64 based | |
| - os: "macos-14" | |
| python-version: "3.11" | |
| ctapipe-version: "v0.24.0" | |
| 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@v5 | |
| 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@v6 | |
| 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@v5 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: 3.11 | |
| - 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 |