# https://dev.azure.com/home-assistant trigger: batch: true branches: include: - rc - dev - master pr: - rc - dev - master resources: containers: - container: 36 image: homeassistant/ci-azure:3.6 - container: 37 image: homeassistant/ci-azure:3.7 repositories: - repository: azure type: github name: 'home-assistant/ci-azure' endpoint: 'home-assistant' variables: - name: PythonMain value: '36' - group: codecov stages: - stage: 'Overview' jobs: - job: 'Lint' pool: vmImage: 'ubuntu-latest' container: $[ variables['PythonMain'] ] steps: - script: | python -m venv venv . venv/bin/activate pip install -r requirements_test.txt -c homeassistant/package_constraints.txt displayName: 'Setup Env' - script: | . venv/bin/activate flake8 homeassistant tests script displayName: 'Run flake8' - job: 'Validate' pool: vmImage: 'ubuntu-latest' container: $[ variables['PythonMain'] ] steps: - script: | python -m venv venv . venv/bin/activate pip install -e . displayName: 'Setup Env' - script: | . venv/bin/activate python -m script.hassfest validate displayName: 'Validate manifests' - script: | . venv/bin/activate ./script/gen_requirements_all.py validate displayName: 'requirements_all validate' - job: 'CheckFormat' pool: vmImage: 'ubuntu-latest' container: $[ variables['PythonMain'] ] steps: - script: | python -m venv venv . venv/bin/activate pip install -r requirements_test.txt -c homeassistant/package_constraints.txt displayName: 'Setup Env' - script: | . venv/bin/activate ./script/check_format displayName: 'Check Black formatting' - stage: 'Tests' dependsOn: - 'Overview' jobs: - job: 'PyTest' pool: vmImage: 'ubuntu-latest' strategy: maxParallel: 3 matrix: Python36: python.container: '36' Python37: python.container: '37' container: $[ variables['python.container'] ] steps: - template: templates/azp-step-cache.yaml@azure parameters: keyfile: 'requirements_test_all.txt, .cache, homeassistant/package_constraints.txt' build: | set -e python -m venv venv . venv/bin/activate pip install -U pip setuptools pytest-azurepipelines -c homeassistant/package_constraints.txt pip install -r requirements_test_all.txt -c homeassistant/package_constraints.txt # This is a TEMP. Eventually we should make sure our 4 dependencies drop typing. # Find offending deps with `pipdeptree -r -p typing` pip uninstall -y typing - script: | set -e . venv/bin/activate pytest --timeout=9 --durations=10 -qq -o console_output_style=count -p no:sugar tests script/check_dirty displayName: 'Run pytest for python $(python.container)' condition: and(succeeded(), ne(variables['python.container'], variables['PythonMain'])) - script: | set -e . venv/bin/activate pytest --timeout=9 --durations=10 --cov homeassistant --cov-report html -qq -o console_output_style=count -p no:sugar tests codecov --token $(codecovToken) script/check_dirty displayName: 'Run pytest for python $(python.container) / coverage' condition: and(succeeded(), eq(variables['python.container'], variables['PythonMain'])) - stage: 'FullCheck' dependsOn: - 'Overview' jobs: - job: 'Pylint' pool: vmImage: 'ubuntu-latest' container: $[ variables['PythonMain'] ] steps: - template: templates/azp-step-cache.yaml@azure parameters: keyfile: 'requirements_all.txt, requirements_test.txt, .cache, homeassistant/package_constraints.txt' build: | set -e python -m venv venv . venv/bin/activate pip install -U pip setuptools pip install -r requirements_all.txt -c homeassistant/package_constraints.txt pip install -r requirements_test.txt -c homeassistant/package_constraints.txt - script: | . venv/bin/activate pylint homeassistant displayName: 'Run pylint' - job: 'Mypy' pool: vmImage: 'ubuntu-latest' container: $[ variables['PythonMain'] ] steps: - script: | python -m venv venv . venv/bin/activate pip install -e . pip install -r requirements_test.txt -c homeassistant/package_constraints.txt displayName: 'Setup Env' - script: | . venv/bin/activate mypy homeassistant displayName: 'Run mypy'