name: Python-package on: push: branches: - master pull_request: branches: - master - release/* # automatically cancel in-progress builds if another commit is pushed concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: CONDA_ENV: test-env GITHUB_ACTIONS: 'true' jobs: test: name: ${{ matrix.task }} ${{ matrix.method }} (${{ matrix.os }}, Python ${{ matrix.python_version }}) runs-on: ${{ matrix.os }} timeout-minutes: 60 strategy: fail-fast: false matrix: include: - os: macOS-latest task: regular python_version: '3.9' - os: macOS-latest task: sdist python_version: '3.10' - os: macOS-latest task: bdist python_version: '3.7' - os: macOS-latest task: if-else python_version: '3.9' - os: macOS-latest task: mpi method: source python_version: '3.10' - os: macOS-latest task: mpi method: pip python_version: '3.11' - os: macOS-latest task: mpi method: wheel python_version: '3.8' steps: - name: Checkout repository uses: actions/checkout@v3 with: fetch-depth: 5 submodules: true - name: Setup and run tests shell: bash run: | export TASK="${{ matrix.task }}" export METHOD="${{ matrix.method }}" export PYTHON_VERSION="${{ matrix.python_version }}" if [[ "${{ matrix.os }}" == "macOS-latest" ]]; then export COMPILER="gcc" export OS_NAME="macos" elif [[ "${{ matrix.os }}" == "ubuntu-latest" ]]; then export COMPILER="clang" export OS_NAME="linux" fi export BUILD_DIRECTORY="$GITHUB_WORKSPACE" export LGB_VER=$(head -n 1 VERSION.txt) export CONDA=${HOME}/miniforge export PATH=${CONDA}/bin:${PATH} $GITHUB_WORKSPACE/.ci/setup.sh || exit 1 $GITHUB_WORKSPACE/.ci/test.sh || exit 1 test-oldest-versions: name: Python - oldest supported versions (ubuntu-latest) runs-on: ubuntu-latest timeout-minutes: 60 steps: - name: Checkout repository uses: actions/checkout@v3 with: fetch-depth: 5 submodules: true - name: Create wheel run: | docker run \ --rm \ -v $(pwd):/opt/lgb-build \ -w /opt/lgb-build \ lightgbm/vsts-agent:manylinux_2_28_x86_64 \ /bin/bash -c 'PATH=/opt/miniforge/bin:$PATH sh ./build-python.sh bdist_wheel --nomp' - name: Test compatibility run: | docker run \ --rm \ -v $(pwd):/opt/lgb-build \ -w /opt/lgb-build \ python:3.6 \ /bin/bash ./.ci/test-python-oldest.sh all-python-package-jobs-successful: if: always() runs-on: ubuntu-latest needs: [test, test-oldest-versions] steps: - name: Note that all tests succeeded uses: re-actors/alls-green@v1.2.2 with: jobs: ${{ toJSON(needs) }}