diff --git a/azure-pipelines-ci.yml b/azure-pipelines-ci.yml index 4464050f919..d4c5d7fb2ce 100644 --- a/azure-pipelines-ci.yml +++ b/azure-pipelines-ci.yml @@ -5,7 +5,8 @@ trigger: branches: include: - dev -pr: none +pr: + - dev resources: containers: @@ -15,136 +16,127 @@ resources: image: homeassistant/ci-azure:3.6 - container: 37 image: homeassistant/ci-azure:3.7 - - variables: - name: ArtifactFeed value: '2df3ae11-3bf6-49bc-a809-ba0d340d6a6d' - name: PythonMain value: '35' +stages: -jobs: +- stage: 'Overview' + jobs: + - job: 'Lint' + pool: + vmImage: 'ubuntu-latest' + container: $[ variables['PythonMain'] ] + steps: + - script: | + python -m venv lint + + . lint/bin/activate + pip install flake8 + flake8 homeassistant tests script + displayName: 'Run flake8' -- job: 'Lint' - pool: - vmImage: 'ubuntu-latest' - container: $[ variables['PythonMain'] ] - steps: - - script: | - python -m venv lint - - . lint/bin/activate - pip install flake8 - flake8 homeassistant tests script - displayName: 'Run flake8' - - -- job: 'Check' +- stage: 'Tests' dependsOn: - - Lint - pool: - vmImage: 'ubuntu-latest' - strategy: - maxParallel: 1 - matrix: - Python35: - python.version: '3.5' - python.container: '35' - Python36: - python.version: '3.6' - python.container: '36' - Python37: - python.version: '3.7' - python.container: '37' - container: $[ variables['python.container'] ] - steps: - - script: | - echo "$(python.version)" > .cache - displayName: 'Set python $(python.version) for requirement cache' + - 'Overview' + jobs: + - job: 'PyTests' + pool: + vmImage: 'ubuntu-latest' + strategy: + maxParallel: 3 + matrix: + Python35: + python.container: '35' + Python36: + python.container: '36' + Python37: + python.container: '37' + container: $[ variables['python.container'] ] + steps: + - script: | + python --version > .cache + displayName: 'Set python $(python.version) for requirement cache' + - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 + displayName: 'Restore artifacts based on Requirements' + inputs: + keyfile: 'requirements_test_all.txt, .cache' + targetfolder: './venv' + vstsFeed: '$(ArtifactFeed)' + - script: | + set -e + python -m venv venv + + . venv/bin/activate + pip install -U pip setuptools + pip install -r requirements_test_all.txt -c homeassistant/package_constraints.txt + pip install pytest-azurepipelines -c homeassistant/package_constraints.txt + displayName: 'Create Virtual Environment & Install Requirements' + condition: and(succeeded(), ne(variables['CacheRestored'], 'true')) + - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 + displayName: 'Save artifacts based on Requirements' + inputs: + keyfile: 'requirements_test_all.txt, .cache' + targetfolder: './venv' + vstsFeed: '$(ArtifactFeed)' + - script: | + . venv/bin/activate + pip install -e . + displayName: 'Install Home Assistant for python $(python.version)' + - script: | + . venv/bin/activate + pytest --timeout=9 --durations=10 --junitxml=junit/test-results.xml -qq -o console_output_style=count -p no:sugar tests + displayName: 'Run pytest for python $(python.version)' + - task: PublishTestResults@2 + condition: succeededOrFailed() + inputs: + testResultsFiles: '**/test-*.xml' + testRunTitle: 'Publish test results for Python $(python.version)' - - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 - displayName: 'Restore artifacts based on Requirements' - inputs: - keyfile: 'requirements_test_all.txt, .cache' - targetfolder: './venv' - vstsFeed: '$(ArtifactFeed)' - - - script: | - set -e - python -m venv venv - - . venv/bin/activate - pip install -U pip setuptools - pip install -r requirements_test_all.txt -c homeassistant/package_constraints.txt - displayName: 'Create Virtual Environment & Install Requirements' - condition: and(succeeded(), ne(variables['CacheRestored'], 'true')) - - - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 - displayName: 'Save artifacts based on Requirements' - inputs: - keyfile: 'requirements_test_all.txt, .cache' - targetfolder: './venv' - vstsFeed: '$(ArtifactFeed)' - - - script: | - . venv/bin/activate - pip install -e . - displayName: 'Install Home Assistant for python $(python.version)' - - - script: | - . venv/bin/activate - pytest --timeout=9 --durations=10 --junitxml=junit/test-results.xml -qq -o console_output_style=count -p no:sugar tests - displayName: 'Run pytest for python $(python.version)' - - - task: PublishTestResults@2 - condition: succeededOrFailed() - inputs: - testResultsFiles: '**/test-*.xml' - testRunTitle: 'Publish test results for Python $(python.version)' - -- job: 'FullCheck' +- stage: 'FullCheck' dependsOn: - - Check - pool: - vmImage: 'ubuntu-latest' - container: $[ variables['PythonMain'] ] - steps: - - script: | - echo "$(PythonMain)" > .cache - displayName: 'Set python $(python.version) for requirement cache' - - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 - displayName: 'Restore artifacts based on Requirements' - inputs: - keyfile: 'requirements_all.txt, requirements_test.txt, .cache' - targetfolder: './venv' - vstsFeed: '$(ArtifactFeed)' - - - script: | - 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 - displayName: 'Create Virtual Environment & Install Requirements' - condition: and(succeeded(), ne(variables['CacheRestored'], 'true')) - - - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 - displayName: 'Save artifacts based on Requirements' - inputs: - keyfile: 'requirements_all.txt, requirements_test.txt, .cache' - targetfolder: './venv' - vstsFeed: '$(ArtifactFeed)' - - - script: | - . venv/bin/activate - pip install -e . - displayName: 'Install Home Assistant for python $(python.version)' - - - script: | - . venv/bin/activate - pylint homeassistant - displayName: 'Run pylint' - + - 'Overview' + jobs: + - job: 'Pytlint' + dependsOn: + - Check + pool: + vmImage: 'ubuntu-latest' + container: $[ variables['PythonMain'] ] + steps: + - script: | + python --version > .cache + displayName: 'Set python $(python.version) for requirement cache' + - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 + displayName: 'Restore artifacts based on Requirements' + inputs: + keyfile: 'requirements_all.txt, requirements_test.txt, .cache' + targetfolder: './venv' + vstsFeed: '$(ArtifactFeed)' + - script: | + 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 + displayName: 'Create Virtual Environment & Install Requirements' + condition: and(succeeded(), ne(variables['CacheRestored'], 'true')) + - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 + displayName: 'Save artifacts based on Requirements' + inputs: + keyfile: 'requirements_all.txt, requirements_test.txt, .cache' + targetfolder: './venv' + vstsFeed: '$(ArtifactFeed)' + - script: | + . venv/bin/activate + pip install -e . + displayName: 'Install Home Assistant for python $(python.version)' + - script: | + . venv/bin/activate + pylint homeassistant + displayName: 'Run pylint'