mirror of
https://github.com/home-assistant/core
synced 2024-09-06 10:29:55 +02:00
233 lines
7.8 KiB
YAML
233 lines
7.8 KiB
YAML
# https://dev.azure.com/home-assistant
|
|
|
|
trigger:
|
|
batch: true
|
|
branches:
|
|
include:
|
|
- rc
|
|
- dev
|
|
- master
|
|
pr:
|
|
- rc
|
|
- dev
|
|
- master
|
|
|
|
resources:
|
|
containers:
|
|
- container: 38
|
|
image: homeassistant/ci-azure:3.8
|
|
repositories:
|
|
- repository: azure
|
|
type: github
|
|
name: "home-assistant/ci-azure"
|
|
endpoint: "home-assistant"
|
|
variables:
|
|
- name: PythonMain
|
|
value: "38"
|
|
- name: versionHadolint
|
|
value: "v1.17.6"
|
|
|
|
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
|
|
pre-commit install-hooks
|
|
- script: |
|
|
. venv/bin/activate
|
|
pre-commit run --hook-stage manual check-executables-have-shebangs --all-files
|
|
displayName: "Run executables check"
|
|
- script: |
|
|
. venv/bin/activate
|
|
pre-commit run codespell --all-files
|
|
displayName: "Run codespell"
|
|
- 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
|
|
pip install -e .
|
|
- script: |
|
|
. venv/bin/activate
|
|
python -m script.hassfest --action 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
|
|
pre-commit install-hooks
|
|
- script: |
|
|
. venv/bin/activate
|
|
pre-commit run black --all-files --show-diff-on-failure
|
|
displayName: "Check Black formatting"
|
|
- job: "Docker"
|
|
pool:
|
|
vmImage: "ubuntu-latest"
|
|
steps:
|
|
- script: sudo docker pull hadolint/hadolint:$(versionHadolint)
|
|
displayName: "Install Hadolint"
|
|
- script: |
|
|
set -e
|
|
for dockerfile in Dockerfile Dockerfile.dev
|
|
do
|
|
echo "Linting: $dockerfile"
|
|
docker run --rm -i \
|
|
-v "$(pwd)/.hadolint.yaml:/.hadolint.yaml:ro" \
|
|
hadolint/hadolint:$(versionHadolint) < "$dockerfile"
|
|
done
|
|
displayName: "Run Hadolint"
|
|
|
|
- stage: "Tests"
|
|
dependsOn:
|
|
- "Overview"
|
|
jobs:
|
|
- job: "PyTest"
|
|
pool:
|
|
vmImage: "ubuntu-latest"
|
|
strategy:
|
|
maxParallel: 3
|
|
matrix:
|
|
Python38:
|
|
python.container: "38"
|
|
container: $[ variables['python.container'] ]
|
|
steps:
|
|
- template: templates/azp-step-cache.yaml@azure
|
|
parameters:
|
|
keyfile: "requirements_test_all.txt | requirements_test.txt | homeassistant/package_constraints.txt"
|
|
build: |
|
|
set -e
|
|
python -m venv venv
|
|
|
|
. venv/bin/activate
|
|
pip install -U pip setuptools pytest-azurepipelines pytest-xdist -c homeassistant/package_constraints.txt
|
|
pip install -r requirements_test_all.txt
|
|
- script: |
|
|
. venv/bin/activate
|
|
pip install -e .
|
|
displayName: "Install Home Assistant"
|
|
- script: |
|
|
set -e
|
|
|
|
. venv/bin/activate
|
|
pytest --timeout=9 --durations=10 -n auto --dist=loadfile -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 -n auto --dist=loadfile --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 wheel
|
|
pip install -r requirements_all.txt
|
|
pip install -r requirements_test.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
|
|
pre-commit install-hooks
|
|
- script: |
|
|
. venv/bin/activate
|
|
pre-commit run mypy --all-files
|
|
displayName: "Run mypy"
|