diff --git a/azure-pipelines-ci.yml b/azure-pipelines-ci.yml new file mode 100644 index 000000000..6cee89ace --- /dev/null +++ b/azure-pipelines-ci.yml @@ -0,0 +1,48 @@ +# https://dev.azure.com/home-assistant + +trigger: + batch: true + branches: + include: + - master + - dev +pr: + - dev +variables: + - name: versionHadolint + value: "v1.16.3" + +jobs: + - job: "Tox" + pool: + vmImage: "ubuntu-latest" + steps: + - task: UsePythonVersion@0 + displayName: "Use Python 3.7" + inputs: + versionSpec: "3.7" + - script: pip install tox + displayName: "Install Tox" + - script: tox + displayName: "Run Tox" + - job: "JQ" + pool: + vmImage: "ubuntu-latest" + 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-latest" + 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" diff --git a/azure-pipelines-release.yml b/azure-pipelines-release.yml new file mode 100644 index 000000000..313b368e5 --- /dev/null +++ b/azure-pipelines-release.yml @@ -0,0 +1,56 @@ +# https://dev.azure.com/home-assistant + +trigger: + batch: true + branches: + exclude: + - "*" + tags: + include: + - "*" +pr: none +variables: + - name: basePythonTag + value: "3.7-alpine3.11" + - name: versionBuilder + value: "6.9" + - group: docker + +jobs: + - job: "VersionValidate" + pool: + vmImage: "ubuntu-latest" + steps: + - task: UsePythonVersion@0 + displayName: "Use Python 3.7" + inputs: + versionSpec: "3.7" + - script: | + setup_version="$(python setup.py -V)" + branch_version="$(Build.SourceBranchName)" + + if [ "${branch_version}" == "dev" ]; then + exit 0 + elif [ "${setup_version}" != "${branch_version}" ]; then + echo "Version of tag ${branch_version} don't match with ${setup_version}!" + exit 1 + fi + displayName: "Check version of branch/tag" + - job: "Release" + dependsOn: + - "VersionValidate" + pool: + vmImage: "ubuntu-latest" + 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 $(basePythonTag) --version $(Build.SourceBranchName) \ + --all -t /data --docker-hub homeassistant + displayName: "Build Release" diff --git a/azure-pipelines-wheels.yml b/azure-pipelines-wheels.yml new file mode 100644 index 000000000..0d07aea1e --- /dev/null +++ b/azure-pipelines-wheels.yml @@ -0,0 +1,60 @@ +# https://dev.azure.com/home-assistant + +trigger: + batch: true + branches: + include: + - dev +pr: none +variables: + - name: versionWheels + value: "1.6-3.7-alpine3.11" + - group: wheels + +jobs: + - job: "Wheels" + timeoutInMinutes: 360 + pool: + vmImage: "ubuntu-latest" + strategy: + maxParallel: 5 + 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 \ + curl + + 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 $(wheelsIndex) \ + --requirement requirements.txt \ + --upload rsync \ + --remote wheels@$(wheelsHost):/opt/wheels + displayName: "Run wheels build" diff --git a/azure-pipelines.yml b/azure-pipelines.yml deleted file mode 100644 index aaa5da796..000000000 --- a/azure-pipelines.yml +++ /dev/null @@ -1,154 +0,0 @@ -# https://dev.azure.com/home-assistant - -trigger: - batch: true - branches: - include: - - master - - dev - tags: - include: - - "*" - exclude: - - untagged* -pr: - - dev -variables: - - name: basePythonTag - value: "3.7-alpine3.11" - - name: versionHadolint - value: "v1.16.3" - - name: versionBuilder - value: "6.9" - - name: versionWheels - value: "1.6-3.7-alpine3.11" - - group: docker - - group: wheels - -stages: - - stage: "Test" - jobs: - - job: "Tox" - pool: - vmImage: "ubuntu-latest" - steps: - - task: UsePythonVersion@0 - displayName: "Use Python 3.7" - inputs: - versionSpec: "3.7" - - script: pip install tox - displayName: "Install Tox" - - script: tox - displayName: "Run Tox" - - job: "JQ" - pool: - vmImage: "ubuntu-latest" - 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-latest" - 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" - - - stage: "Wheels" - jobs: - - job: "Wheels" - condition: eq(variables['Build.SourceBranchName'], 'dev') - timeoutInMinutes: 360 - pool: - vmImage: "ubuntu-latest" - strategy: - maxParallel: 5 - 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 \ - curl - - 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 $(wheelsIndex) \ - --requirement requirements.txt \ - --upload rsync \ - --remote wheels@$(wheelsHost):/opt/wheels - displayName: "Run wheels build" - - - stage: "Deploy" - jobs: - - job: "VersionValidate" - condition: or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), eq(variables['Build.SourceBranchName'], 'dev')) - pool: - vmImage: "ubuntu-latest" - steps: - - task: UsePythonVersion@0 - displayName: "Use Python 3.7" - inputs: - versionSpec: "3.7" - - script: | - setup_version="$(python setup.py -V)" - branch_version="$(Build.SourceBranchName)" - - if [ "${branch_version}" == "dev" ]; then - exit 0 - elif [ "${setup_version}" != "${branch_version}" ]; then - echo "Version of tag ${branch_version} don't match with ${setup_version}!" - exit 1 - fi - displayName: "Check version of branch/tag" - - job: "Release" - dependsOn: - - "VersionValidate" - pool: - vmImage: "ubuntu-latest" - 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 $(basePythonTag) --version $(Build.SourceBranchName) \ - --all -t /data --docker-hub homeassistant - displayName: "Build Release"