# https://dev.azure.com/home-assistant trigger: branches: include: - master - dev tags: include: - '*' exclude: - untagged* pr: - dev variables: - name: versionHadolint value: 'v1.16.3' - name: versionBuilder value: '3.2' - name: versionWheels value: '0.3' - group: docker - group: wheels jobs: - job: 'Tox' pool: vmImage: 'ubuntu-16.04' steps: - task: UsePythonVersion@0 displayName: 'Use Python $(python.version)' inputs: versionSpec: '3.7' - script: pip install tox displayName: 'Install Tox' - script: tox displayName: 'Run Tox' - job: 'JQ' pool: vmImage: 'ubuntu-16.04' steps: - script: sudo apt-get install -y jq displayName: 'Install JQ' - bash: | shopt -s globstar cat **/*.json | jq '.' displayName: 'Run JQ' - job: 'Hadolint' pool: vmImage: 'ubuntu-16.04' steps: - script: sudo docker pull hadolint/hadolint:$(versionHadolint) displayName: 'Install Hadolint' - script: | sudo docker run --rm -i \ -v $(pwd)/.hadolint.yaml:/.hadolint.yaml:ro \ hadolint/hadolint:$(versionHadolint) < Dockerfile displayName: 'Run Hadolint' - job: 'Wheels' condition: eq(variables['Build.SourceBranchName'], 'dev') timeoutInMinutes: 360 pool: vmImage: 'ubuntu-16.04' strategy: maxParallel: 3 matrix: amd64: buildArch: 'amd64' i386: buildArch: 'i386' armhf: buildArch: 'armhf' armv7: buildArch: 'armv7' aarch64: buildArch: 'aarch64' steps: - script: | sudo apt-get update sudo apt-get install -y --no-install-recommends \ qemu-user-static \ binfmt-support 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: | sudo docker run --rm -v $(pwd):/data:ro -v $(pwd)/.ssh:/root/.ssh:rw \ homeassistant/$(buildArch)-wheels:$(versionWheels) \ --apk "build-base;libffi-dev;openssl-dev" \ --index https://wheels.hass.io \ --requirement requirements.txt \ --upload rsync \ --remote wheels@$(wheelsHost):/opt/wheels displayName: 'Run wheels build' - job: 'ReleaseDEV' condition: and(eq(variables['Build.SourceBranchName'], 'dev'), succeeded('JQ'), succeeded('Tox'), succeeded('Hadolint'), succeeded('Wheels')) dependsOn: - 'JQ' - 'Tox' - 'Hadolint' - 'Wheels' pool: vmImage: 'ubuntu-16.04' steps: - script: sudo docker login -u $(dockerUser) -p $(dockerPassword) displayName: 'Docker hub login' - script: sudo docker pull homeassistant/amd64-builder:$(versionBuilder) displayName: 'Install Builder' - script: | sudo docker run --rm --privileged \ -v ~/.docker:/root/.docker \ -v /run/docker.sock:/run/docker.sock:rw -v $(pwd):/data:ro \ homeassistant/amd64-builder:$(versionBuilder) \ --supervisor --all -t /data --version dev --docker-hub homeassistant displayName: 'Build DEV' - job: 'Release' condition: and(startsWith(variables['Build.SourceBranch'], 'refs/tags'), succeeded('JQ'), succeeded('Tox'), succeeded('Hadolint')) dependsOn: - 'JQ' - 'Tox' - 'Hadolint' pool: vmImage: 'ubuntu-16.04' steps: - script: sudo docker login -u $(dockerUser) -p $(dockerPassword) displayName: 'Docker hub login' - script: sudo docker pull homeassistant/amd64-builder:$(versionBuilder) displayName: 'Install Builder' - script: | sudo docker run --rm --privileged \ -v ~/.docker:/root/.docker \ -v /run/docker.sock:/run/docker.sock:rw -v $(pwd):/data:ro \ homeassistant/amd64-builder:$(versionBuilder) \ --supervisor --all -t /data --docker-hub homeassistant displayName: 'Build Release'