mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Azure ci templates (#25688)
* Use templates for Azure-CI steps * Migrate ci * fix endpoint
This commit is contained in:
parent
73f5575708
commit
f8bd9dbe3e
@ -18,9 +18,12 @@ resources:
|
|||||||
image: homeassistant/ci-azure:3.6
|
image: homeassistant/ci-azure:3.6
|
||||||
- container: 37
|
- container: 37
|
||||||
image: homeassistant/ci-azure:3.7
|
image: homeassistant/ci-azure:3.7
|
||||||
|
repositories:
|
||||||
|
- repository: azure
|
||||||
|
type: github
|
||||||
|
name: 'home-assistant/ci-azure'
|
||||||
|
endpoint: 'home-assistant'
|
||||||
variables:
|
variables:
|
||||||
- name: ArtifactFeed
|
|
||||||
value: '2df3ae11-3bf6-49bc-a809-ba0d340d6a6d'
|
|
||||||
- name: PythonMain
|
- name: PythonMain
|
||||||
value: '36'
|
value: '36'
|
||||||
- group: codecov
|
- group: codecov
|
||||||
@ -95,39 +98,19 @@ stages:
|
|||||||
python.container: '37'
|
python.container: '37'
|
||||||
container: $[ variables['python.container'] ]
|
container: $[ variables['python.container'] ]
|
||||||
steps:
|
steps:
|
||||||
- script: |
|
- template: templates/azp-step-cache.yaml@azure
|
||||||
python --version > .cache
|
parameters:
|
||||||
displayName: 'Set python $(python.container) for requirement cache'
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
|
||||||
displayName: 'Restore artifacts based on Requirements'
|
|
||||||
inputs:
|
|
||||||
keyfile: 'requirements_test_all.txt, .cache, homeassistant/package_constraints.txt'
|
keyfile: 'requirements_test_all.txt, .cache, homeassistant/package_constraints.txt'
|
||||||
targetfolder: './venv'
|
build: |
|
||||||
vstsFeed: '$(ArtifactFeed)'
|
set -e
|
||||||
- script: |
|
python -m venv venv
|
||||||
set -e
|
|
||||||
python -m venv venv
|
|
||||||
|
|
||||||
. venv/bin/activate
|
. venv/bin/activate
|
||||||
pip install -U pip setuptools pytest-azurepipelines -c homeassistant/package_constraints.txt
|
pip install -U pip setuptools pytest-azurepipelines -c homeassistant/package_constraints.txt
|
||||||
pip install -r requirements_test_all.txt -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.
|
# This is a TEMP. Eventually we should make sure our 4 dependencies drop typing.
|
||||||
# Find offending deps with `pipdeptree -r -p typing`
|
# Find offending deps with `pipdeptree -r -p typing`
|
||||||
pip uninstall -y typing
|
pip uninstall -y typing
|
||||||
displayName: 'Create Virtual Environment & Install Requirements'
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
|
|
||||||
# Explicit Cache Save (instead of using RestoreAndSaveCache)
|
|
||||||
# Dont wait with cache save for all the other task in this job to complete (±30 minutes), other parallel jobs might utilize this
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
|
|
||||||
displayName: 'Save artifacts based on Requirements'
|
|
||||||
inputs:
|
|
||||||
keyfile: 'requirements_test_all.txt, .cache, homeassistant/package_constraints.txt'
|
|
||||||
targetfolder: './venv'
|
|
||||||
vstsFeed: '$(ArtifactFeed)'
|
|
||||||
- script: |
|
|
||||||
. venv/bin/activate
|
|
||||||
pip install -e .
|
|
||||||
displayName: 'Install Home Assistant for python $(python.container)'
|
|
||||||
- script: |
|
- script: |
|
||||||
. venv/bin/activate
|
. venv/bin/activate
|
||||||
pytest --timeout=9 --durations=10 --junitxml=test-results.xml -qq -o console_output_style=count -p no:sugar tests
|
pytest --timeout=9 --durations=10 --junitxml=test-results.xml -qq -o console_output_style=count -p no:sugar tests
|
||||||
@ -162,35 +145,17 @@ stages:
|
|||||||
vmImage: 'ubuntu-latest'
|
vmImage: 'ubuntu-latest'
|
||||||
container: $[ variables['PythonMain'] ]
|
container: $[ variables['PythonMain'] ]
|
||||||
steps:
|
steps:
|
||||||
- script: |
|
- template: templates/azp-step-cache.yaml@azure
|
||||||
python --version > .cache
|
parameters:
|
||||||
displayName: 'Set python $(PythonMain) for requirement cache'
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
|
||||||
displayName: 'Restore artifacts based on Requirements'
|
|
||||||
inputs:
|
|
||||||
keyfile: 'requirements_all.txt, requirements_test.txt, .cache, homeassistant/package_constraints.txt'
|
keyfile: 'requirements_all.txt, requirements_test.txt, .cache, homeassistant/package_constraints.txt'
|
||||||
targetfolder: './venv'
|
build: |
|
||||||
vstsFeed: '$(ArtifactFeed)'
|
set -e
|
||||||
- script: |
|
python -m venv venv
|
||||||
set -e
|
|
||||||
python -m venv venv
|
|
||||||
|
|
||||||
. venv/bin/activate
|
. venv/bin/activate
|
||||||
pip install -U pip setuptools
|
pip install -U pip setuptools
|
||||||
pip install -r requirements_all.txt -c homeassistant/package_constraints.txt
|
pip install -r requirements_all.txt -c homeassistant/package_constraints.txt
|
||||||
pip install -r requirements_test.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, homeassistant/package_constraints.txt'
|
|
||||||
targetfolder: './venv'
|
|
||||||
vstsFeed: '$(ArtifactFeed)'
|
|
||||||
- script: |
|
|
||||||
. venv/bin/activate
|
|
||||||
pip install -e .
|
|
||||||
displayName: 'Install Home Assistant for python $(PythonMain)'
|
|
||||||
- script: |
|
- script: |
|
||||||
. venv/bin/activate
|
. venv/bin/activate
|
||||||
pylint homeassistant
|
pylint homeassistant
|
||||||
|
@ -12,88 +12,51 @@ pr: none
|
|||||||
variables:
|
variables:
|
||||||
- name: versionWheels
|
- name: versionWheels
|
||||||
value: '1.0-3.7-alpine3.10'
|
value: '1.0-3.7-alpine3.10'
|
||||||
- group: wheels
|
resources:
|
||||||
|
repositories:
|
||||||
|
- repository: azure
|
||||||
|
type: github
|
||||||
|
name: 'home-assistant/ci-azure'
|
||||||
|
endpoint: 'home-assistant'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
- template: templates/azp-job-wheels.yaml@azure
|
||||||
|
parameters:
|
||||||
|
builderVersion: '$(versionWheels)'
|
||||||
|
builderApk: 'build-base;cmake;git;linux-headers;bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;autoconf;automake;cups-dev;linux-headers;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev'
|
||||||
|
wheelsRequirement: 'requirements_wheels.txt'
|
||||||
|
wheelsRequirementDiff: 'requirements_diff.txt'
|
||||||
|
preBuild:
|
||||||
|
- script: |
|
||||||
|
cp requirements_all.txt requirements_wheels.txt
|
||||||
|
if [[ "$(Build.Reason)" =~ (Schedule|Manual) ]]; then
|
||||||
|
touch requirements_diff.txt
|
||||||
|
else
|
||||||
|
curl -s -o requirements_diff.txt https://raw.githubusercontent.com/home-assistant/home-assistant/master/requirements_all.txt
|
||||||
|
fi
|
||||||
|
|
||||||
- job: 'Wheels'
|
requirement_files="requirements_wheels.txt requirements_diff.txt"
|
||||||
timeoutInMinutes: 360
|
for requirement_file in ${requirement_files}; do
|
||||||
pool:
|
sed -i "s|# pytradfri|pytradfri|g" ${requirement_file}
|
||||||
vmImage: 'ubuntu-latest'
|
sed -i "s|# pybluez|pybluez|g" ${requirement_file}
|
||||||
strategy:
|
sed -i "s|# bluepy|bluepy|g" ${requirement_file}
|
||||||
maxParallel: 5
|
sed -i "s|# beacontools|beacontools|g" ${requirement_file}
|
||||||
matrix:
|
sed -i "s|# RPi.GPIO|RPi.GPIO|g" ${requirement_file}
|
||||||
amd64:
|
sed -i "s|# raspihats|raspihats|g" ${requirement_file}
|
||||||
buildArch: 'amd64'
|
sed -i "s|# rpi-rf|rpi-rf|g" ${requirement_file}
|
||||||
i386:
|
sed -i "s|# blinkt|blinkt|g" ${requirement_file}
|
||||||
buildArch: 'i386'
|
sed -i "s|# fritzconnection|fritzconnection|g" ${requirement_file}
|
||||||
armhf:
|
sed -i "s|# pyuserinput|pyuserinput|g" ${requirement_file}
|
||||||
buildArch: 'armhf'
|
sed -i "s|# evdev|evdev|g" ${requirement_file}
|
||||||
armv7:
|
sed -i "s|# smbus-cffi|smbus-cffi|g" ${requirement_file}
|
||||||
buildArch: 'armv7'
|
sed -i "s|# i2csense|i2csense|g" ${requirement_file}
|
||||||
aarch64:
|
sed -i "s|# python-eq3bt|python-eq3bt|g" ${requirement_file}
|
||||||
buildArch: 'aarch64'
|
sed -i "s|# pycups|pycups|g" ${requirement_file}
|
||||||
steps:
|
sed -i "s|# homekit|homekit|g" ${requirement_file}
|
||||||
- script: |
|
sed -i "s|# decora_wifi|decora_wifi|g" ${requirement_file}
|
||||||
sudo apt-get update
|
sed -i "s|# decora|decora|g" ${requirement_file}
|
||||||
sudo apt-get install -y --no-install-recommends \
|
sed -i "s|# PySwitchbot|PySwitchbot|g" ${requirement_file}
|
||||||
qemu-user-static \
|
sed -i "s|# pySwitchmate|pySwitchmate|g" ${requirement_file}
|
||||||
binfmt-support \
|
sed -i "s|# face_recognition|face_recognition|g" ${requirement_file}
|
||||||
curl
|
done
|
||||||
|
displayName: 'Prepare requirements files for Hass.io'
|
||||||
sudo mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
|
|
||||||
sudo update-binfmts --enable qemu-arm
|
|
||||||
sudo update-binfmts --enable qemu-aarch64
|
|
||||||
displayName: 'Initial cross build'
|
|
||||||
- script: |
|
|
||||||
mkdir -p .ssh
|
|
||||||
echo -e "-----BEGIN RSA PRIVATE KEY-----\n$(wheelsSSH)\n-----END RSA PRIVATE KEY-----" >> .ssh/id_rsa
|
|
||||||
ssh-keyscan -H $(wheelsHost) >> .ssh/known_hosts
|
|
||||||
chmod 600 .ssh/*
|
|
||||||
displayName: 'Install ssh key'
|
|
||||||
- script: sudo docker pull homeassistant/$(buildArch)-wheels:$(versionWheels)
|
|
||||||
displayName: 'Install wheels builder'
|
|
||||||
- script: |
|
|
||||||
cp requirements_all.txt requirements_wheels.txt
|
|
||||||
if [[ "$(Build.Reason)" =~ (Schedule|Manual) ]]; then
|
|
||||||
touch requirements_diff.txt
|
|
||||||
else
|
|
||||||
curl -s -o requirements_diff.txt https://raw.githubusercontent.com/home-assistant/home-assistant/master/requirements_all.txt
|
|
||||||
fi
|
|
||||||
|
|
||||||
requirement_files="requirements_wheels.txt requirements_diff.txt"
|
|
||||||
for requirement_file in ${requirement_files}; do
|
|
||||||
sed -i "s|# pytradfri|pytradfri|g" ${requirement_file}
|
|
||||||
sed -i "s|# pybluez|pybluez|g" ${requirement_file}
|
|
||||||
sed -i "s|# bluepy|bluepy|g" ${requirement_file}
|
|
||||||
sed -i "s|# beacontools|beacontools|g" ${requirement_file}
|
|
||||||
sed -i "s|# RPi.GPIO|RPi.GPIO|g" ${requirement_file}
|
|
||||||
sed -i "s|# raspihats|raspihats|g" ${requirement_file}
|
|
||||||
sed -i "s|# rpi-rf|rpi-rf|g" ${requirement_file}
|
|
||||||
sed -i "s|# blinkt|blinkt|g" ${requirement_file}
|
|
||||||
sed -i "s|# fritzconnection|fritzconnection|g" ${requirement_file}
|
|
||||||
sed -i "s|# pyuserinput|pyuserinput|g" ${requirement_file}
|
|
||||||
sed -i "s|# evdev|evdev|g" ${requirement_file}
|
|
||||||
sed -i "s|# smbus-cffi|smbus-cffi|g" ${requirement_file}
|
|
||||||
sed -i "s|# i2csense|i2csense|g" ${requirement_file}
|
|
||||||
sed -i "s|# python-eq3bt|python-eq3bt|g" ${requirement_file}
|
|
||||||
sed -i "s|# pycups|pycups|g" ${requirement_file}
|
|
||||||
sed -i "s|# homekit|homekit|g" ${requirement_file}
|
|
||||||
sed -i "s|# decora_wifi|decora_wifi|g" ${requirement_file}
|
|
||||||
sed -i "s|# decora|decora|g" ${requirement_file}
|
|
||||||
sed -i "s|# PySwitchbot|PySwitchbot|g" ${requirement_file}
|
|
||||||
sed -i "s|# pySwitchmate|pySwitchmate|g" ${requirement_file}
|
|
||||||
sed -i "s|# face_recognition|face_recognition|g" ${requirement_file}
|
|
||||||
done
|
|
||||||
displayName: 'Prepare requirements files for Hass.io'
|
|
||||||
- script: |
|
|
||||||
sudo docker run --rm -v $(pwd):/data:ro -v $(pwd)/.ssh:/root/.ssh:rw \
|
|
||||||
homeassistant/$(buildArch)-wheels:$(versionWheels) \
|
|
||||||
--apk "build-base;cmake;git;linux-headers;bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;autoconf;automake;cups-dev;linux-headers;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev" \
|
|
||||||
--index $(wheelsIndex) \
|
|
||||||
--requirement requirements_wheels.txt \
|
|
||||||
--requirement-diff requirements_diff.txt \
|
|
||||||
--upload rsync \
|
|
||||||
--remote wheels@$(wheelsHost):/opt/wheels
|
|
||||||
displayName: 'Run wheels build'
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user