nni/pipelines/fast-test.yml

261 строка
7.2 KiB
YAML

trigger: none
schedules:
- cron: 0 16 * * *
branches:
include: [ master ]
always: true
variables:
filter.modified.globs: 'pipelines/fast-test.yml,!.github/**,!docs/**,!examples/**'
filter.prbody.heading: '#### Test Options'
filter.prbody.optionIndex: 0
stages:
- stage: lint
jobs:
- job: copyright
pool:
vmImage: ubuntu-latest
steps:
- script: python test/vso_tools/copyright_check.py
displayName: Check copyright header
- job: docs
pool:
vmImage: ubuntu-latest
steps:
- template: templates/install-dependencies.yml
parameters:
platform: ubuntu-latest
- script: |
cd docs
rstcheck -r source \
--ignore-directives automodule,autoclass,autofunction,cardlinkitem,codesnippetcard,argparse,tabs,youtube,image-sg \
--ignore-roles githublink --ignore-substitutions release \
--report-level warning
displayName: rstcheck
- script: |
cd docs
sphinx-build -W --keep-going -T -q source build/html
displayName: Sphinx sanity check
- script: |
set -e
cd docs
sudo apt-get install -y gettext
python tools/translation_patch.py
sphinx-build -W --keep-going -T -q -D language=zh source build/html_zh
displayName: Sphinx sanity check (Chinese)
- script: |
set -e
cd docs
make i18n
git diff --exit-code source/locales
displayName: Translation up-to-date
- script: |
cd docs
sphinx-build -b linkcheck -W --keep-going -T -q source build/linkcheck
displayName: External links integrity check
- job: python
pool:
vmImage: ubuntu-latest
steps:
- template: templates/install-dependencies.yml
parameters:
platform: ubuntu-latest
- script: |
# pylint requires newer typing extension. Override requirements in tensorflow
python -m pip install "typing-extensions>=3.10"
displayName: Resolve dependency version
- script: python test/vso_tools/trigger_import.py
displayName: Trigger import
- script: |
python -m pylint --rcfile pylintrc nni
displayName: pylint
- script: |
set -e
python -m flake8 nni --count --select=E9,F63,F72,F82 --show-source --statistics
EXCLUDES=examples/trials/mnist-nas/*/mnist*.py,examples/trials/nas_cifar10/src/cifar10/general_child.py
python -m flake8 examples --count --exclude=$EXCLUDES --select=E9,F63,F72,F82 --show-source --statistics
displayName: flake8
- script: |
python -m pyright nni
displayName: Type Check
- job: typescript
pool:
vmImage: ubuntu-latest
steps:
- template: templates/install-dependencies.yml
parameters:
platform: ubuntu-latest
- script: |
set -e
npm --prefix ts/nni_manager install
npm --prefix ts/nni_manager run eslint
displayName: ESLint (NNI Manager)
- script: |
set -e
npm --prefix ts/webui install
npm --prefix ts/webui run sanity-check
displayName: Sanity check (WebUI)
- stage: filter
jobs:
- job: check
pool:
vmImage: ubuntu-latest
steps:
- template: templates/stage-filter.yml
# To reduce debug cost, steps are sorted differently on each platform,
# so that a bug in any module will cause at least one platform to fail quickly.
- stage: test
dependsOn: lint
# dependencies.$(StageName).outputs['$(JobName).$(TaskName).$(VariableName)']
condition: and(succeeded(), ne(dependencies.filter.outputs['check.execution.skipsubsequent'], 'true'))
jobs:
- job: ubuntu_latest
pool:
vmImage: ubuntu-latest
steps:
- template: templates/install-dependencies.yml
parameters:
platform: ubuntu-latest
- template: templates/install-nni.yml
- script: |
set -e
mkdir -p coverage
cd test
python -m pytest ut --cov-config=.coveragerc
cp coverage.xml ../coverage/python.xml
displayName: Python unit test
- script: |
set -e
npm --prefix ts/nni_manager run test
npm --prefix ts/nni_manager run test_nnimanager
cp ts/nni_manager/coverage/cobertura-coverage.xml coverage/typescript.xml
displayName: TypeScript unit test
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testResultsFiles: '$(System.DefaultWorkingDirectory)/**/test-*.xml'
testRunTitle: 'Publish test results for Python $(python.version)'
displayName: Publish test results
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: coverage/*
displayName: Publish code coverage results
- script: |
cd test
python training_service/nnitest/run_tests.py --config training_service/config/pr_tests.yml
displayName: Simple integration test
- job: ubuntu_legacy
pool:
vmImage: ubuntu-20.04
steps:
- template: templates/install-dependencies.yml
parameters:
platform: ubuntu-legacy
- template: templates/install-nni.yml
- script: |
cd test
python training_service/nnitest/run_tests.py --config training_service/config/pr_tests.yml
displayName: Simple integration test
- script: |
cd test
python -m pytest ut --ignore=ut/retiarii/test_convert_basic.py \
--ignore=ut/retiarii/test_convert_operators.py \
--ignore=ut/retiarii/test_convert_pytorch.py
displayName: Python unit test
- script: |
export PATH=${PWD}/toolchain/node/bin:$PATH
npm --prefix ts/nni_manager run test
npm --prefix ts/nni_manager run test_nnimanager
displayName: TypeScript unit test
- job: windows
pool:
vmImage: windows-latest
timeoutInMinutes: 75
steps:
- template: templates/install-dependencies.yml
parameters:
platform: windows
- template: templates/install-nni.yml
parameters:
user: false
- script: |
cd test
python -m pytest ut
displayName: Python unit test
# temporarily disable this test, add it back after bug fixed
- script: |
npm --prefix ts/nni_manager run test
npm --prefix ts/nni_manager run test_nnimanager
displayName: TypeScript unit test
- script: |
cd test
python training_service/nnitest/run_tests.py --config training_service/config/pr_tests.yml
displayName: Simple integration test
- job: macos
pool:
vmImage: macOS-latest
steps:
- template: templates/install-dependencies.yml
parameters:
platform: macos
- template: templates/install-nni.yml
- script: |
cd test
python -m pytest ut
displayName: Python unit test
- script: |
CI=true npm --prefix ts/nni_manager run test
# # exclude nnimanager's ut because macos in pipeline is pretty slow
# CI=true npm --prefix ts/nni_manager run test_nnimanager
displayName: TypeScript unit test
- script: |
cd test
python training_service/nnitest/run_tests.py --config training_service/config/pr_tests.yml
displayName: Simple integration test