Python 3.8 on CI (#34654)

This commit is contained in:
Pascal Vizeli 2020-04-26 01:54:41 +02:00 committed by GitHub
parent e7f8d6bbf7
commit 9ca2ad53f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 197 additions and 191 deletions

View File

@ -1,7 +1,10 @@
FROM python:3.7 FROM python:3.8
RUN apt-get update \ RUN \
&& apt-get install -y --no-install-recommends \ && apt-get update && apt-get install -y --no-install-recommends \
software-properties-common \
&& add-apt-repository ppa:jonathonf/ffmpeg-4 \
&& apt-get update && apt-get install -y --no-install-recommends \
libudev-dev \ libudev-dev \
libavformat-dev \ libavformat-dev \
libavcodec-dev \ libavcodec-dev \

View File

@ -4,9 +4,9 @@ trigger:
batch: true batch: true
branches: branches:
include: include:
- rc - rc
- dev - dev
- master - master
pr: pr:
- rc - rc
- dev - dev
@ -14,205 +14,208 @@ pr:
resources: resources:
containers: containers:
- container: 37 - container: 37
image: homeassistant/ci-azure:3.7 image: homeassistant/ci-azure:3.7
- container: 38
image: homeassistant/ci-azure:3.8
repositories: repositories:
- repository: azure - repository: azure
type: github type: github
name: 'home-assistant/ci-azure' name: "home-assistant/ci-azure"
endpoint: 'home-assistant' endpoint: "home-assistant"
variables: variables:
- name: PythonMain - name: PythonMain
value: '37' value: "37"
stages: 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
- stage: 'Overview' . venv/bin/activate
jobs: pip install -r requirements_test.txt -c homeassistant/package_constraints.txt
- job: 'Lint' pre-commit install-hooks
pool: - script: |
vmImage: 'ubuntu-latest' . venv/bin/activate
container: $[ variables['PythonMain'] ] pre-commit run --hook-stage manual check-executables-have-shebangs --all-files
steps: displayName: "Run executables check"
- template: templates/azp-step-cache.yaml@azure - script: |
parameters: . venv/bin/activate
keyfile: 'requirements_test.txt | homeassistant/package_constraints.txt' pre-commit run codespell --all-files
build: | displayName: "Run codespell"
python -m venv venv - script: |
. venv/bin/activate
pre-commit run flake8 --all-files
displayName: "Run flake8"
- script: |
. venv/bin/activate
pre-commit run bandit --all-files
displayName: "Run bandit"
- script: |
. venv/bin/activate
pre-commit run isort --all-files --show-diff-on-failure
displayName: "Run isort"
- script: |
. venv/bin/activate
pre-commit run check-json --all-files
displayName: "Run check-json"
- script: |
. venv/bin/activate
pre-commit run yamllint --all-files
displayName: "Run yamllint"
- script: |
. venv/bin/activate
pre-commit run pyupgrade --all-files --show-diff-on-failure
displayName: "Run pyupgrade"
# Prettier seems to hang on Azure, unknown why yet.
# Temporarily disable the check to no block PRs
# - script: |
# . venv/bin/activate
# pre-commit run prettier --all-files --show-diff-on-failure
# displayName: 'Run prettier'
- 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 . venv/bin/activate
pip install -r requirements_test.txt -c homeassistant/package_constraints.txt pip install -e .
pre-commit install-hooks - script: |
- script: | . venv/bin/activate
. venv/bin/activate python -m script.hassfest --action validate
pre-commit run --hook-stage manual check-executables-have-shebangs --all-files displayName: "Validate manifests"
displayName: 'Run executables check' - script: |
- script: | . venv/bin/activate
. venv/bin/activate ./script/gen_requirements_all.py validate
pre-commit run codespell --all-files displayName: "requirements_all validate"
displayName: 'Run codespell' - job: "CheckFormat"
- script: | pool:
. venv/bin/activate vmImage: "ubuntu-latest"
pre-commit run flake8 --all-files container: $[ variables['PythonMain'] ]
displayName: 'Run flake8' steps:
- script: | - template: templates/azp-step-cache.yaml@azure
. venv/bin/activate parameters:
pre-commit run bandit --all-files keyfile: "requirements_test.txt | homeassistant/package_constraints.txt"
displayName: 'Run bandit' build: |
- script: | python -m venv venv
. venv/bin/activate
pre-commit run isort --all-files --show-diff-on-failure
displayName: 'Run isort'
- script: |
. venv/bin/activate
pre-commit run check-json --all-files
displayName: 'Run check-json'
- script: |
. venv/bin/activate
pre-commit run yamllint --all-files
displayName: 'Run yamllint'
- script: |
. venv/bin/activate
pre-commit run pyupgrade --all-files --show-diff-on-failure
displayName: 'Run pyupgrade'
# Prettier seems to hang on Azure, unknown why yet.
# Temporarily disable the check to no block PRs
# - script: |
# . venv/bin/activate
# pre-commit run prettier --all-files --show-diff-on-failure
# displayName: 'Run prettier'
- 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 . venv/bin/activate
pip install -e . pip install -r requirements_test.txt -c homeassistant/package_constraints.txt
- script: | pre-commit install-hooks
. venv/bin/activate - script: |
python -m script.hassfest --action validate . venv/bin/activate
displayName: 'Validate manifests' pre-commit run black --all-files --show-diff-on-failure
- script: | displayName: "Check Black formatting"
. 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 - stage: "Tests"
pip install -r requirements_test.txt -c homeassistant/package_constraints.txt dependsOn:
pre-commit install-hooks - "Overview"
- script: | jobs:
. venv/bin/activate - job: "PyTest"
pre-commit run black --all-files --show-diff-on-failure pool:
displayName: 'Check Black formatting' vmImage: "ubuntu-latest"
strategy:
maxParallel: 3
matrix:
Python37:
python.container: "37"
Python38:
python.container: "38"
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
- stage: 'Tests' . venv/bin/activate
dependsOn: pip install -U pip setuptools pytest-azurepipelines pytest-xdist -c homeassistant/package_constraints.txt
- 'Overview' pip install -r requirements_test_all.txt -c homeassistant/package_constraints.txt
jobs: # This is a TEMP. Eventually we should make sure our 4 dependencies drop typing.
- job: 'PyTest' # Find offending deps with `pipdeptree -r -p typing`
pool: pip uninstall -y typing
vmImage: 'ubuntu-latest' - script: |
strategy: . venv/bin/activate
maxParallel: 3 pip install -e .
matrix: displayName: "Install Home Assistant"
Python37: - script: |
python.container: '37' set -e
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 . venv/bin/activate
pip install -U pip setuptools pytest-azurepipelines pytest-xdist -c homeassistant/package_constraints.txt pytest --timeout=9 --durations=10 -n auto --dist=loadfile -qq -o console_output_style=count -p no:sugar tests
pip install -r requirements_test_all.txt -c homeassistant/package_constraints.txt script/check_dirty
# This is a TEMP. Eventually we should make sure our 4 dependencies drop typing. displayName: "Run pytest for python $(python.container)"
# Find offending deps with `pipdeptree -r -p typing` condition: and(succeeded(), ne(variables['python.container'], variables['PythonMain']))
pip uninstall -y typing - script: |
- script: | set -e
. venv/bin/activate
pip install -e .
displayName: 'Install Home Assistant'
- script: |
set -e
. venv/bin/activate . venv/bin/activate
pytest --timeout=9 --durations=10 -n auto --dist=loadfile -qq -o console_output_style=count -p no:sugar tests pytest --timeout=9 --durations=10 -n auto --dist=loadfile --cov homeassistant --cov-report html -qq -o console_output_style=count -p no:sugar tests
script/check_dirty codecov --token $(codecovToken)
displayName: 'Run pytest for python $(python.container)' script/check_dirty
condition: and(succeeded(), ne(variables['python.container'], variables['PythonMain'])) displayName: "Run pytest for python $(python.container) / coverage"
- script: | condition: and(succeeded(), eq(variables['python.container'], variables['PythonMain']))
set -e
. venv/bin/activate - stage: "FullCheck"
pytest --timeout=9 --durations=10 -n auto --dist=loadfile --cov homeassistant --cov-report html -qq -o console_output_style=count -p no:sugar tests dependsOn:
codecov --token $(codecovToken) - "Overview"
script/check_dirty jobs:
displayName: 'Run pytest for python $(python.container) / coverage' - job: "Pylint"
condition: and(succeeded(), eq(variables['python.container'], variables['PythonMain'])) 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
- stage: 'FullCheck' . venv/bin/activate
dependsOn: pip install -U pip setuptools wheel
- 'Overview' pip install -r requirements_all.txt -c homeassistant/package_constraints.txt
jobs: pip install -r requirements_test.txt -c homeassistant/package_constraints.txt
- job: 'Pylint' - script: |
pool: . venv/bin/activate
vmImage: 'ubuntu-latest' pip install -e .
container: $[ variables['PythonMain'] ] displayName: "Install Home Assistant"
steps: - script: |
- template: templates/azp-step-cache.yaml@azure . venv/bin/activate
parameters: pylint homeassistant
keyfile: 'requirements_all.txt | requirements_test.txt | homeassistant/package_constraints.txt' displayName: "Run pylint"
build: | - job: "Mypy"
set -e pool:
python -m venv venv 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 . venv/bin/activate
pip install -U pip setuptools wheel pip install -e . -r requirements_test.txt -c homeassistant/package_constraints.txt
pip install -r requirements_all.txt -c homeassistant/package_constraints.txt pre-commit install-hooks
pip install -r requirements_test.txt -c homeassistant/package_constraints.txt - script: |
- script: | . venv/bin/activate
. venv/bin/activate pre-commit run mypy --all-files
pip install -e . displayName: "Run mypy"
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
pre-commit install-hooks
- script: |
. venv/bin/activate
pre-commit run mypy --all-files
displayName: 'Run mypy'