mirror of
https://github.com/home-assistant/core.git
synced 2025-07-27 07:07:28 +00:00
Migrate wheels builder to GitHub actions (#50445)
This commit is contained in:
parent
973f59e423
commit
56d1e0a99d
161
.github/workflows/wheels.yml
vendored
Normal file
161
.github/workflows/wheels.yml
vendored
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
name: Build wheels
|
||||||
|
|
||||||
|
# yamllint disable-line rule:truthy
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 4 * * *"
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- dev
|
||||||
|
- rc
|
||||||
|
paths:
|
||||||
|
- "requirements.txt"
|
||||||
|
- "requirements_all.txt"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
init:
|
||||||
|
name: Initialize wheels builder
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
architectures: ${{ steps.info.outputs.architectures }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout the repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Get information
|
||||||
|
id: info
|
||||||
|
uses: home-assistant/actions/helpers/info@master
|
||||||
|
|
||||||
|
- name: Create requirements_diff file
|
||||||
|
run: curl -s -o requirements_diff.txt https://raw.githubusercontent.com/home-assistant/core/dev/requirements.txt
|
||||||
|
|
||||||
|
- name: Write env-file
|
||||||
|
run: |
|
||||||
|
(
|
||||||
|
echo "GRPC_BUILD_WITH_BORING_SSL_ASM=false"
|
||||||
|
echo "GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=true"
|
||||||
|
echo "GRPC_PYTHON_BUILD_WITH_CYTHON=true"
|
||||||
|
) > .env_file
|
||||||
|
|
||||||
|
- name: Upload env_file
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: env_file
|
||||||
|
path: ./env_file
|
||||||
|
|
||||||
|
- name: Upload requirements_diff
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: requirements_diff
|
||||||
|
path: ./requirements_diff.txt
|
||||||
|
|
||||||
|
core:
|
||||||
|
name: Build wheels with ${{ matrix.tag }} (${{ matrix.arch }}) for core
|
||||||
|
needs: init
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
arch: ${{ fromJson(needs.init.outputs.architectures) }}
|
||||||
|
tag:
|
||||||
|
- "3.8-alpine3.12"
|
||||||
|
- "3.9-alpine3.13"
|
||||||
|
steps:
|
||||||
|
- name: Checkout the repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Download env_file
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: env_file
|
||||||
|
|
||||||
|
- name: Download requirements_diff
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: requirements_diff
|
||||||
|
|
||||||
|
- name: Build wheels
|
||||||
|
uses: home-assistant/wheels@master
|
||||||
|
with:
|
||||||
|
tag: ${{ matrix.tag }}
|
||||||
|
arch: ${{ matrix.arch }}
|
||||||
|
wheels-host: ${{ secrets.WHEELS_HOST }}
|
||||||
|
wheels-key: ${{ secrets.WHEELS_KEY }}
|
||||||
|
wheels-user: wheels
|
||||||
|
env-file: true
|
||||||
|
apk: "build-base;cmake;git;linux-headers;bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev"
|
||||||
|
pip: "Cython;numpy"
|
||||||
|
skip-binary: aiohttp
|
||||||
|
constraints: "homeassistant/package_constraints.txt"
|
||||||
|
requirements-diff: 'requirements_diff.txt'
|
||||||
|
requirements: "requirements.txt"
|
||||||
|
|
||||||
|
integrations:
|
||||||
|
name: Build wheels with ${{ matrix.tag }} (${{ matrix.arch }}) for integrations
|
||||||
|
needs: init
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
arch: ${{ fromJson(needs.init.outputs.architectures) }}
|
||||||
|
tag:
|
||||||
|
- "3.8-alpine3.12"
|
||||||
|
- "3.9-alpine3.13"
|
||||||
|
steps:
|
||||||
|
- name: Checkout the repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Download env_file
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: env_file
|
||||||
|
|
||||||
|
- name: Download requirements_diff
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: requirements_diff
|
||||||
|
|
||||||
|
- name: Uncomment packages
|
||||||
|
run: |
|
||||||
|
requirement_files="requirements_all.txt requirements_diff.txt"
|
||||||
|
for requirement_file in ${requirement_files}; do
|
||||||
|
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|# avion|avion|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}
|
||||||
|
sed -i "s|# py_noaa|py_noaa|g" ${requirement_file}
|
||||||
|
sed -i "s|# bme680|bme680|g" ${requirement_file}
|
||||||
|
sed -i "s|# python-gammu|python-gammu|g" ${requirement_file}
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Build wheels
|
||||||
|
uses: home-assistant/wheels@master
|
||||||
|
with:
|
||||||
|
tag: ${{ matrix.tag }}
|
||||||
|
arch: ${{ matrix.arch }}
|
||||||
|
wheels-host: ${{ secrets.WHEELS_HOST }}
|
||||||
|
wheels-key: ${{ secrets.WHEELS_KEY }}
|
||||||
|
wheels-user: wheels
|
||||||
|
env-file: true
|
||||||
|
apk: "build-base;cmake;git;linux-headers;libexecinfo-dev;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;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev"
|
||||||
|
pip: "Cython;numpy;scikit-build"
|
||||||
|
skip-binary: aiohttp
|
||||||
|
constraints: "homeassistant/package_constraints.txt"
|
||||||
|
requirements-diff: 'requirements_diff.txt'
|
||||||
|
requirements: "requirements_all.txt"
|
@ -1,101 +0,0 @@
|
|||||||
# https://dev.azure.com/home-assistant
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
branches:
|
|
||||||
include:
|
|
||||||
- dev
|
|
||||||
- rc
|
|
||||||
paths:
|
|
||||||
include:
|
|
||||||
- requirements_all.txt
|
|
||||||
pr: none
|
|
||||||
schedules:
|
|
||||||
- cron: '0 */4 * * *'
|
|
||||||
displayName: 'daily builds'
|
|
||||||
branches:
|
|
||||||
include:
|
|
||||||
- dev
|
|
||||||
variables:
|
|
||||||
- name: versionWheels
|
|
||||||
value: '1.13.0-3.8-alpine3.12'
|
|
||||||
resources:
|
|
||||||
repositories:
|
|
||||||
- repository: azure
|
|
||||||
type: github
|
|
||||||
name: 'home-assistant/ci-azure'
|
|
||||||
endpoint: 'home-assistant'
|
|
||||||
|
|
||||||
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'
|
|
||||||
builderPip: 'Cython;numpy'
|
|
||||||
skipBinary: 'aiohttp'
|
|
||||||
wheelsRequirement: 'requirements.txt'
|
|
||||||
wheelsRequirementDiff: 'requirements_diff.txt'
|
|
||||||
wheelsConstraint: 'homeassistant/package_constraints.txt'
|
|
||||||
jobName: 'Wheels_Core'
|
|
||||||
preBuild:
|
|
||||||
- script: |
|
|
||||||
if [[ "$(Build.Reason)" =~ (Schedule|Manual) ]]; then
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
curl -s -o requirements_diff.txt https://raw.githubusercontent.com/home-assistant/core/master/requirements.txt
|
|
||||||
fi
|
|
||||||
displayName: 'Prepare requirements files for Home Assistant Core wheels'
|
|
||||||
- template: templates/azp-job-wheels.yaml@azure
|
|
||||||
parameters:
|
|
||||||
builderVersion: '$(versionWheels)'
|
|
||||||
builderApk: 'build-base;cmake;git;linux-headers;libexecinfo-dev;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;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev'
|
|
||||||
builderPip: 'Cython;numpy;scikit-build'
|
|
||||||
builderEnvFile: true
|
|
||||||
skipBinary: 'aiohttp'
|
|
||||||
wheelsRequirement: 'requirements_wheels.txt'
|
|
||||||
wheelsRequirementDiff: 'requirements_diff.txt'
|
|
||||||
wheelsConstraint: 'homeassistant/package_constraints.txt'
|
|
||||||
jobName: 'Wheels_Integrations'
|
|
||||||
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/core/master/requirements_all.txt
|
|
||||||
fi
|
|
||||||
|
|
||||||
requirement_files="requirements_wheels.txt requirements_diff.txt"
|
|
||||||
for requirement_file in ${requirement_files}; do
|
|
||||||
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|# avion|avion|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}
|
|
||||||
sed -i "s|# py_noaa|py_noaa|g" ${requirement_file}
|
|
||||||
sed -i "s|# bme680|bme680|g" ${requirement_file}
|
|
||||||
sed -i "s|# python-gammu|python-gammu|g" ${requirement_file}
|
|
||||||
done
|
|
||||||
|
|
||||||
# Write env for build settings
|
|
||||||
(
|
|
||||||
echo "GRPC_BUILD_WITH_BORING_SSL_ASM=false"
|
|
||||||
echo "GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=true"
|
|
||||||
echo "GRPC_PYTHON_BUILD_WITH_CYTHON=true"
|
|
||||||
) > .env_file
|
|
||||||
displayName: 'Prepare requirements files for Home Assistant wheels'
|
|
Loading…
x
Reference in New Issue
Block a user