1.6.5.post
: fix * in dependency versions
#40844
This file contains 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: Test full | |
# see: https://help.github.com/en/actions/reference/events-that-trigger-workflows | |
on: # Trigger the workflow on push or pull request, but only for the master branch | |
push: | |
branches: [master, "release/*"] | |
pull_request: | |
branches: [master, "release/*"] | |
types: [opened, reopened, ready_for_review, synchronize] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.head_ref }} | |
cancel-in-progress: ${{ ! (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/release/')) }} | |
jobs: | |
cpu: | |
runs-on: ${{ matrix.os }} | |
if: github.event.pull_request.draft == false | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-20.04, windows-2019, macOS-10.15] | |
python-version: ["3.7", "3.9"] # minimum, maximum | |
requires: ["oldest", "latest"] | |
release: ["stable"] | |
exclude: | |
# Skip if torch<1.8 and py3.9 on Linux: https://github.com/pytorch/pytorch/issues/50014 | |
- {os: ubuntu-20.04, python-version: "3.9", requires: "oldest"} | |
# TODO: re-enable RC testing | |
# include: | |
# - {os: ubuntu-20.04, python-version: "3.10", requires: "latest", release: "pre"} | |
timeout-minutes: 40 | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Reset caching | |
run: python -c "import time; days = time.time() / 60 / 60 / 24; print(f'TIME_PERIOD=d{int(days / 2) * 2}')" >> $GITHUB_ENV | |
- name: basic setup | |
run: | | |
pip --version | |
pip install -q fire | |
# Github Actions: Run step on specific OS: https://stackoverflow.com/a/57948488/4521646 | |
- name: Setup macOS | |
if: runner.os == 'macOS' | |
run: | | |
brew install openmpi libuv # Horovod on macOS requires OpenMPI, Gloo not currently supported | |
- name: Setup Windows | |
if: runner.os == 'windows' | |
run: | | |
python .actions/assistant.py requirements_prune_pkgs horovod | |
- name: Set min. dependencies | |
if: matrix.requires == 'oldest' | |
run: | | |
python .actions/assistant.py replace_oldest_ver | |
# Note: This uses an internal pip API and may not always work | |
# https://github.com/actions/cache/blob/master/examples.md#multiple-oss-in-a-workflow | |
- name: Get pip cache dir | |
id: pip-cache | |
run: echo "::set-output name=dir::$(pip cache dir)" | |
- name: pip cache | |
uses: actions/cache@v2 | |
with: | |
path: ${{ steps.pip-cache.outputs.dir }} | |
key: ${{ runner.os }}-pip-td${{ env.TIME_PERIOD }}-py${{ matrix.python-version }}-${{ matrix.release }}-${{ matrix.requires }}-${{ hashFiles('requirements/*.txt') }} | |
restore-keys: | | |
${{ runner.os }}-pip-td${{ env.TIME_PERIOD }}-py${{ matrix.python-version }}-${{ matrix.release }}-${{ matrix.requires }}- | |
- name: Pull legacy checkpoints | |
run: bash .actions/pull_legacy_checkpoints.sh | |
- name: Install dependencies | |
run: | | |
flag=$(python -c "print('--pre' if '${{matrix.release}}' == 'pre' else '')" 2>&1) | |
url=$(python -c "print('test/cpu/torch_test.html' if '${{matrix.release}}' == 'pre' else 'cpu/torch_stable.html')" 2>&1) | |
pip install -r requirements.txt --upgrade $flag --find-links "https://download.pytorch.org/whl/${url}" | |
pip install -r requirements/test.txt --upgrade | |
pip list | |
shell: bash | |
- name: DocTests | |
run: coverage run --source pytorch_lightning -m pytest pytorch_lightning | |
- name: Install extra dependencies | |
run: | | |
# adjust versions according installed Torch version | |
python ./requirements/adjust-versions.py requirements/extra.txt | |
pip install --requirement ./requirements/extra.txt --find-links https://download.pytorch.org/whl/cpu/torch_stable.html --upgrade | |
pip list | |
shell: bash | |
- name: Reinstall Horovod if necessary | |
if: runner.os != 'windows' | |
env: | |
HOROVOD_BUILD_ARCH_FLAGS: "-mfma" | |
HOROVOD_WITHOUT_MXNET: 1 | |
HOROVOD_WITHOUT_TENSORFLOW: 1 | |
run: | | |
HOROVOD_BUILT=$(python -c "import horovod.torch; horovod.torch.nccl_built(); print('SUCCESS')" || true) | |
if [[ $HOROVOD_BUILT != "SUCCESS" ]]; then | |
pip uninstall -y horovod | |
grep "horovod" requirements/strategies.txt > requirements/horovod.txt | |
pip install --no-cache-dir -r requirements/horovod.txt | |
fi | |
horovodrun --check-build | |
python -c "import horovod.torch" | |
shell: bash | |
- name: Cache datasets | |
uses: actions/cache@v2 | |
with: | |
path: Datasets | |
key: pl-dataset | |
- name: Sanity check | |
run: | | |
python requirements/check-avail-extras.py | |
- name: UnitTests | |
run: | | |
# NOTE: do not include coverage report here, see: https://github.com/nedbat/coveragepy/issues/1003 | |
coverage run --source pytorch_lightning -m pytest pytorch_lightning tests -v --durations=50 --junitxml=junit/test-results-${{ runner.os }}-py${{ matrix.python-version }}-${{ matrix.requires }}-${{ matrix.release }}.xml | |
- name: Examples | |
run: | | |
# adjust versions according installed Torch version | |
python ./requirements/adjust-versions.py requirements/examples.txt | |
pip install -r requirements/examples.txt --find-links https://download.pytorch.org/whl/cpu/torch_stable.html --upgrade | |
python -m pytest pl_examples -v --durations=10 | |
- name: Upload pytest results | |
uses: actions/upload-artifact@v2 | |
with: | |
name: pytest-results-${{ runner.os }}-py${{ matrix.python-version }}-${{ matrix.requires }}-${{ matrix.release }} | |
path: junit/test-results-${{ runner.os }}-py${{ matrix.python-version }}-${{ matrix.requires }}-${{ matrix.release }}.xml | |
if-no-files-found: error | |
if: failure() | |
- name: Statistics | |
if: success() | |
run: | | |
coverage report | |
coverage xml | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v1 | |
if: always() | |
# see: https://github.com/actions/toolkit/issues/399 | |
continue-on-error: true | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
file: coverage.xml | |
flags: cpu,pytest,python${{ matrix.python-version }} | |
name: CPU-coverage | |
fail_ci_if_error: false |