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

@ -16,27 +16,28 @@ 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"
- stage: 'Overview'
jobs: jobs:
- job: 'Lint' - job: "Lint"
pool: pool:
vmImage: 'ubuntu-latest' vmImage: "ubuntu-latest"
container: $[ variables['PythonMain'] ] container: $[ variables['PythonMain'] ]
steps: steps:
- template: templates/azp-step-cache.yaml@azure - template: templates/azp-step-cache.yaml@azure
parameters: parameters:
keyfile: 'requirements_test.txt | homeassistant/package_constraints.txt' keyfile: "requirements_test.txt | homeassistant/package_constraints.txt"
build: | build: |
python -m venv venv python -m venv venv
@ -46,49 +47,49 @@ stages:
- script: | - script: |
. venv/bin/activate . venv/bin/activate
pre-commit run --hook-stage manual check-executables-have-shebangs --all-files pre-commit run --hook-stage manual check-executables-have-shebangs --all-files
displayName: 'Run executables check' displayName: "Run executables check"
- script: | - script: |
. venv/bin/activate . venv/bin/activate
pre-commit run codespell --all-files pre-commit run codespell --all-files
displayName: 'Run codespell' displayName: "Run codespell"
- script: | - script: |
. venv/bin/activate . venv/bin/activate
pre-commit run flake8 --all-files pre-commit run flake8 --all-files
displayName: 'Run flake8' displayName: "Run flake8"
- script: | - script: |
. venv/bin/activate . venv/bin/activate
pre-commit run bandit --all-files pre-commit run bandit --all-files
displayName: 'Run bandit' displayName: "Run bandit"
- script: | - script: |
. venv/bin/activate . venv/bin/activate
pre-commit run isort --all-files --show-diff-on-failure pre-commit run isort --all-files --show-diff-on-failure
displayName: 'Run isort' displayName: "Run isort"
- script: | - script: |
. venv/bin/activate . venv/bin/activate
pre-commit run check-json --all-files pre-commit run check-json --all-files
displayName: 'Run check-json' displayName: "Run check-json"
- script: | - script: |
. venv/bin/activate . venv/bin/activate
pre-commit run yamllint --all-files pre-commit run yamllint --all-files
displayName: 'Run yamllint' displayName: "Run yamllint"
- script: | - script: |
. venv/bin/activate . venv/bin/activate
pre-commit run pyupgrade --all-files --show-diff-on-failure pre-commit run pyupgrade --all-files --show-diff-on-failure
displayName: 'Run pyupgrade' displayName: "Run pyupgrade"
# Prettier seems to hang on Azure, unknown why yet. # Prettier seems to hang on Azure, unknown why yet.
# Temporarily disable the check to no block PRs # Temporarily disable the check to no block PRs
# - script: | # - script: |
# . venv/bin/activate # . venv/bin/activate
# pre-commit run prettier --all-files --show-diff-on-failure # pre-commit run prettier --all-files --show-diff-on-failure
# displayName: 'Run prettier' # displayName: 'Run prettier'
- job: 'Validate' - job: "Validate"
pool: pool:
vmImage: 'ubuntu-latest' vmImage: "ubuntu-latest"
container: $[ variables['PythonMain'] ] container: $[ variables['PythonMain'] ]
steps: steps:
- template: templates/azp-step-cache.yaml@azure - template: templates/azp-step-cache.yaml@azure
parameters: parameters:
keyfile: 'homeassistant/package_constraints.txt' keyfile: "homeassistant/package_constraints.txt"
build: | build: |
python -m venv venv python -m venv venv
@ -97,19 +98,19 @@ stages:
- script: | - script: |
. venv/bin/activate . venv/bin/activate
python -m script.hassfest --action validate python -m script.hassfest --action validate
displayName: 'Validate manifests' displayName: "Validate manifests"
- script: | - script: |
. venv/bin/activate . venv/bin/activate
./script/gen_requirements_all.py validate ./script/gen_requirements_all.py validate
displayName: 'requirements_all validate' displayName: "requirements_all validate"
- job: 'CheckFormat' - job: "CheckFormat"
pool: pool:
vmImage: 'ubuntu-latest' vmImage: "ubuntu-latest"
container: $[ variables['PythonMain'] ] container: $[ variables['PythonMain'] ]
steps: steps:
- template: templates/azp-step-cache.yaml@azure - template: templates/azp-step-cache.yaml@azure
parameters: parameters:
keyfile: 'requirements_test.txt | homeassistant/package_constraints.txt' keyfile: "requirements_test.txt | homeassistant/package_constraints.txt"
build: | build: |
python -m venv venv python -m venv venv
@ -119,25 +120,27 @@ stages:
- script: | - script: |
. venv/bin/activate . venv/bin/activate
pre-commit run black --all-files --show-diff-on-failure pre-commit run black --all-files --show-diff-on-failure
displayName: 'Check Black formatting' displayName: "Check Black formatting"
- stage: 'Tests' - stage: "Tests"
dependsOn: dependsOn:
- 'Overview' - "Overview"
jobs: jobs:
- job: 'PyTest' - job: "PyTest"
pool: pool:
vmImage: 'ubuntu-latest' vmImage: "ubuntu-latest"
strategy: strategy:
maxParallel: 3 maxParallel: 3
matrix: matrix:
Python37: Python37:
python.container: '37' python.container: "37"
Python38:
python.container: "38"
container: $[ variables['python.container'] ] container: $[ variables['python.container'] ]
steps: steps:
- template: templates/azp-step-cache.yaml@azure - template: templates/azp-step-cache.yaml@azure
parameters: parameters:
keyfile: 'requirements_test_all.txt | homeassistant/package_constraints.txt' keyfile: "requirements_test_all.txt | homeassistant/package_constraints.txt"
build: | build: |
set -e set -e
python -m venv venv python -m venv venv
@ -151,14 +154,14 @@ stages:
- script: | - script: |
. venv/bin/activate . venv/bin/activate
pip install -e . pip install -e .
displayName: 'Install Home Assistant' displayName: "Install Home Assistant"
- script: | - script: |
set -e 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 -qq -o console_output_style=count -p no:sugar tests
script/check_dirty script/check_dirty
displayName: 'Run pytest for python $(python.container)' displayName: "Run pytest for python $(python.container)"
condition: and(succeeded(), ne(variables['python.container'], variables['PythonMain'])) condition: and(succeeded(), ne(variables['python.container'], variables['PythonMain']))
- script: | - script: |
set -e set -e
@ -167,21 +170,21 @@ stages:
pytest --timeout=9 --durations=10 -n auto --dist=loadfile --cov homeassistant --cov-report html -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
codecov --token $(codecovToken) codecov --token $(codecovToken)
script/check_dirty script/check_dirty
displayName: 'Run pytest for python $(python.container) / coverage' displayName: "Run pytest for python $(python.container) / coverage"
condition: and(succeeded(), eq(variables['python.container'], variables['PythonMain'])) condition: and(succeeded(), eq(variables['python.container'], variables['PythonMain']))
- stage: 'FullCheck' - stage: "FullCheck"
dependsOn: dependsOn:
- 'Overview' - "Overview"
jobs: jobs:
- job: 'Pylint' - job: "Pylint"
pool: pool:
vmImage: 'ubuntu-latest' vmImage: "ubuntu-latest"
container: $[ variables['PythonMain'] ] container: $[ variables['PythonMain'] ]
steps: steps:
- template: templates/azp-step-cache.yaml@azure - template: templates/azp-step-cache.yaml@azure
parameters: parameters:
keyfile: 'requirements_all.txt | requirements_test.txt | homeassistant/package_constraints.txt' keyfile: "requirements_all.txt | requirements_test.txt | homeassistant/package_constraints.txt"
build: | build: |
set -e set -e
python -m venv venv python -m venv venv
@ -193,19 +196,19 @@ stages:
- script: | - script: |
. venv/bin/activate . venv/bin/activate
pip install -e . pip install -e .
displayName: 'Install Home Assistant' displayName: "Install Home Assistant"
- script: | - script: |
. venv/bin/activate . venv/bin/activate
pylint homeassistant pylint homeassistant
displayName: 'Run pylint' displayName: "Run pylint"
- job: 'Mypy' - job: "Mypy"
pool: pool:
vmImage: 'ubuntu-latest' vmImage: "ubuntu-latest"
container: $[ variables['PythonMain'] ] container: $[ variables['PythonMain'] ]
steps: steps:
- template: templates/azp-step-cache.yaml@azure - template: templates/azp-step-cache.yaml@azure
parameters: parameters:
keyfile: 'requirements_test.txt | setup.py | homeassistant/package_constraints.txt' keyfile: "requirements_test.txt | setup.py | homeassistant/package_constraints.txt"
build: | build: |
python -m venv venv python -m venv venv
@ -215,4 +218,4 @@ stages:
- script: | - script: |
. venv/bin/activate . venv/bin/activate
pre-commit run mypy --all-files pre-commit run mypy --all-files
displayName: 'Run mypy' displayName: "Run mypy"