|
- # 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']
- paths:
- - 'flaml/**'
- - 'test/**'
- - 'notebook/**'
- - '.github/workflows/python-package.yml'
- - 'setup.py'
- pull_request:
- branches: ['main']
- merge_group:
- types: [checks_requested]
-
- concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}-${{ github.head_ref }}
- cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
-
- jobs:
- build:
-
- runs-on: ${{ matrix.os }}
- strategy:
- fail-fast: false
- matrix:
- os: [ubuntu-latest, macos-latest, windows-2019]
- python-version: ["3.8", "3.9", "3.10"]
- steps:
- - uses: actions/checkout@v3
- - name: Set up Python ${{ matrix.python-version }}
- uses: actions/setup-python@v4
- with:
- python-version: ${{ matrix.python-version }}
- - name: On mac + python 3.10, install libomp to facilitate lgbm and xgboost install
- if: matrix.os == 'macOS-latest' && matrix.python-version == '3.10'
- run: |
- # remove libomp version constraint after xgboost works with libomp>11.1.0 on python 3.10
- wget https://raw.githubusercontent.com/Homebrew/homebrew-core/679923b4eb48a8dc7ecc1f05d06063cd79b3fc00/Formula/libomp.rb -O $(find $(brew --repository) -name libomp.rb)
- brew unlink libomp
- 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 wheel
- pip install -e .
- python -c "import flaml"
- pip install -e .[test]
- - name: On Ubuntu python 3.8, install pyspark 3.2.3
- if: matrix.python-version == '3.8' && matrix.os == 'ubuntu-latest'
- run: |
- pip install pyspark==3.2.3
- pip list | grep "pyspark"
- - name: If linux, install ray 2
- if: matrix.os == 'ubuntu-latest'
- run: |
- pip install "ray[tune]<2.5.0"
- - name: If mac, install ray
- if: matrix.os == 'macOS-latest'
- run: |
- pip install -e .[ray]
- - name: If linux or mac, install prophet on python < 3.9
- if: (matrix.os == 'macOS-latest' || matrix.os == 'ubuntu-latest') && matrix.python-version != '3.9' && matrix.python-version != '3.10'
- run: |
- pip install -e .[forecast]
- - name: Install vw on python < 3.10
- if: matrix.python-version != '3.10'
- run: |
- pip install -e .[vw]
- - name: Uninstall pyspark on (python 3.9) or (python 3.8 + windows)
- if: matrix.python-version == '3.9' || (matrix.python-version == '3.8' && matrix.os == 'windows-2019')
- run: |
- # Uninstall pyspark to test env without pyspark
- pip uninstall -y pyspark
- - name: Test with pytest
- if: matrix.python-version != '3.10'
- run: |
- pytest test
- - name: Coverage
- if: matrix.python-version == '3.10'
- run: |
- pip install coverage
- coverage run -a -m pytest test
- coverage xml
- - name: Upload coverage to Codecov
- if: matrix.python-version == '3.10'
- uses: codecov/codecov-action@v3
- with:
- file: ./coverage.xml
- flags: unittests
-
- # docs:
-
- # runs-on: ubuntu-latest
-
- # steps:
- # - uses: actions/checkout@v3
- # - name: Setup Python
- # uses: actions/setup-python@v4
- # 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
|