* Install our core dependencies for mypy in azure To match local setups and tox. * Use "system" mypy in pre-commit instead of the "real" mypy hook The results of mypy depend on what is installed. And the mypy hook runs in a virtualenv of its own, meaning we'd need to install and maintain another set of our dependencies there... no. Use the "system" one and reuse the environment that is set up anyway already instead. * Reintroduce needed ruamel.yaml type ignore This ignore is required when ruamel.yaml is installed, and we want it to be as it's part of the core dependency set.
186 lines
5.4 KiB
YAML
186 lines
5.4 KiB
YAML
# 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:
|
|
- template: templates/azp-step-cache.yaml@azure
|
|
parameters:
|
|
keyfile: 'requirements_test.txt | homeassistant/package_constraints.txt'
|
|
build: |
|
|
python -m venv venv
|
|
|
|
. venv/bin/activate
|
|
pip install -r requirements_test.txt -c homeassistant/package_constraints.txt
|
|
- script: |
|
|
. venv/bin/activate
|
|
flake8 homeassistant tests script
|
|
displayName: 'Run flake8'
|
|
- job: 'Validate'
|
|
pool:
|
|
vmImage: 'ubuntu-latest'
|
|
container: $[ variables['PythonMain'] ]
|
|
steps:
|
|
- template: templates/azp-step-cache.yaml@azure
|
|
parameters:
|
|
keyfile: 'homeassistant/package_constraints.txt'
|
|
build: |
|
|
python -m venv venv
|
|
|
|
. venv/bin/activate
|
|
pip install -e .
|
|
- 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:
|
|
- template: templates/azp-step-cache.yaml@azure
|
|
parameters:
|
|
keyfile: 'requirements_test.txt | homeassistant/package_constraints.txt'
|
|
build: |
|
|
python -m venv venv
|
|
|
|
. venv/bin/activate
|
|
pip install -r requirements_test.txt -c homeassistant/package_constraints.txt
|
|
- 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 | 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: |
|
|
. venv/bin/activate
|
|
pip install -e .
|
|
displayName: 'Install Home Assistant'
|
|
- 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 | 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
|
|
pip install -e .
|
|
displayName: 'Install Home Assistant'
|
|
- script: |
|
|
. venv/bin/activate
|
|
pylint homeassistant
|
|
displayName: 'Run pylint'
|
|
- job: 'Mypy'
|
|
pool:
|
|
vmImage: 'ubuntu-latest'
|
|
container: $[ variables['PythonMain'] ]
|
|
steps:
|
|
- template: templates/azp-step-cache.yaml@azure
|
|
parameters:
|
|
keyfile: 'requirements_test.txt | setup.py | homeassistant/package_constraints.txt'
|
|
build: |
|
|
python -m venv venv
|
|
|
|
. venv/bin/activate
|
|
pip install -e . -r requirements_test.txt -c homeassistant/package_constraints.txt
|
|
- script: |
|
|
. venv/bin/activate
|
|
mypy homeassistant
|
|
displayName: 'Run mypy'
|