|
- # This workflow will install Python dependencies, run tests and lint with a variety of Python versions
- # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
-
- name: Build
-
- on:
- push:
- branches: ['main']
- pull_request:
- branches: ['main']
-
- jobs:
- build:
-
- runs-on: ${{ matrix.os }}
- strategy:
- matrix:
- os: [ubuntu-latest, macos-latest, windows-2019]
- python-version: [3.6, 3.7, 3.8]
-
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python ${{ matrix.python-version }}
- uses: actions/setup-python@v2
- with:
- python-version: ${{ matrix.python-version }}
- - name: If mac, install libomp to facilitate lgbm install
- if: matrix.os == 'macOS-latest'
- run: |
- brew install libomp
- export CC=/usr/bin/clang
- export CXX=/usr/bin/clang++
- export CPPFLAGS="$CPPFLAGS -Xpreprocessor -fopenmp"
- export CFLAGS="$CFLAGS -I/usr/local/opt/libomp/include"
- export CXXFLAGS="$CXXFLAGS -I/usr/local/opt/libomp/include"
- export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/local/opt/libomp/lib -L/usr/local/opt/libomp/lib -lomp"
- - name: Install packages and dependencies
- run: |
- python -m pip install --upgrade pip
- pip install -e .[test]
- - name: If linux or mac, install ray
- if: matrix.os == 'macOS-latest' || matrix.os == 'ubuntu-latest'
- run: |
- pip install -e .[ray]
- - name: Lint with flake8
- run: |
- # stop the build if there are Python syntax errors or undefined names
- flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
- # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
- flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- - name: Test with pytest
- if: ${{ matrix.python-version != '3.7' || matrix.os == 'macos-latest' }}
- run: |
- pytest test
- - name: Coverage
- if: ${{ matrix.python-version == '3.7' && matrix.os != 'macos-latest' }}
- run: |
- pip install coverage
- coverage run -a -m pytest test
- coverage xml
- - name: Upload coverage to Codecov
- if: ${{ matrix.python-version == '3.7' && matrix.os != 'macos-latest' }}
- uses: codecov/codecov-action@v1
- with:
- file: ./coverage.xml
- flags: unittests
-
- docs:
-
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v2
- - name: Setup Python
- uses: actions/setup-python@v2
- with:
- python-version: '3.8'
- - name: Compile documentation
- run: |
- pip install -e .
- python -m pip install sphinx sphinx_rtd_theme
- cd docs
- make html
- - name: Deploy to GitHub pages
- if: ${{ github.ref == 'refs/heads/main' }}
- uses: JamesIves/github-pages-deploy-action@3.6.2
- with:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- BRANCH: gh-pages
- FOLDER: docs/_build/html
- CLEAN: true
|