diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c76058ed27..8969fd9b05 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,39 +2,97 @@ # Based on https://gitlab.com/hassio-addons/addon-node-red/blob/master/.gitlab-ci.yml variables: DOCKER_DRIVER: overlay2 + DOCKER_HOST: tcp://docker:2375/ stages: - lint - test - - build - deploy .lint: &lint + image: esphome/esphome-base-amd64 stage: lint before_script: - pip install -e . + - pip install flake8==3.6.0 pylint==1.9.4 pillow tags: - - python2.7 - - esphome-lint + - docker .test: &test + image: esphome/esphome-base-amd64 stage: test before_script: - pip install -e . tags: - - python2.7 - - esphome-test + - docker variables: TZ: UTC -.docker-builder: &docker-builder +.docker-base: &docker-base + image: esphome/esphome-base-builder before_script: - docker info - - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY" + - docker login -u "$DOCKER_USER" -p "$DOCKER_PASSWORD" + script: + - docker run --rm --privileged hassioaddons/qemu-user-static:latest + - TAG="${CI_COMMIT_TAG#v}" + - TAG="${TAG:-${CI_COMMIT_SHA:0:7}}" + - echo "Tag ${TAG}" + + - | + if [[ "${IS_HASSIO}" == "YES" ]]; then + BUILD_FROM=esphome/esphome-hassio-base-${BUILD_ARCH}:1.0.0 + BUILD_TO=esphome/esphome-hassio-${BUILD_ARCH} + DOCKERFILE=docker/Dockerfile.hassio + else + BUILD_FROM=esphome/esphome-base-${BUILD_ARCH}:1.0.0 + if [[ "${BUILD_ARCH}" == "amd64" ]]; then + BUILD_TO=esphome/esphome + else + BUILD_TO=esphome/esphome-${BUILD_ARCH} + fi + DOCKERFILE=docker/Dockerfile + fi + + - | + docker build \ + --build-arg "BUILD_FROM=${BUILD_FROM}" \ + --build-arg "BUILD_VERSION=${TAG}" \ + --tag "${BUILD_TO}:${TAG}" \ + --file "${DOCKERFILE}" \ + . + - | + if [[ "${RELEASE}" = "YES" ]]; then + echo "Pushing to ${BUILD_TO}:${TAG}" + docker push "${BUILD_TO}:${TAG}" + fi + - | + if [[ "${LATEST}" = "YES" ]]; then + echo "Pushing to :latest" + docker tag ${BUILD_TO}:${TAG} ${BUILD_TO}:latest + docker push ${BUILD_TO}:latest + fi + - | + if [[ "${BETA}" = "YES" ]]; then + echo "Pushing to :beta" + docker tag \ + ${BUILD_TO}:${TAG} \ + ${BUILD_TO}:beta + docker push ${BUILD_TO}:beta + fi + - | + if [[ "${DEV}" = "YES" ]]; then + echo "Pushing to :dev" + docker tag \ + ${BUILD_TO}:${TAG} \ + ${BUILD_TO}:dev + docker push ${BUILD_TO}:dev + fi services: - docker:dind tags: - - hassio-builder + - docker + stage: deploy flake8: <<: *lint @@ -61,15 +119,9 @@ test3: script: - esphome tests/test3.yaml compile -# Build jobs -build:normal: - <<: *docker-builder - stage: build - script: - - docker build -t "${CI_REGISTRY}/esphome/esphome:dev" . - .deploy-pypi: &deploy-pypi stage: deploy + image: python:2.7 before_script: - pip install -e . - pip install twine @@ -77,8 +129,7 @@ build:normal: - python setup.py sdist - twine upload dist/* tags: - - python2.7 - - esphome-test + - docker deploy-release:pypi: <<: *deploy-pypi @@ -93,3 +144,181 @@ deploy-beta:pypi: - /^v\d+\.\d+\.\d+b\d+$/ except: - /^(?!rc).+@/ + +.latest: &latest + <<: *docker-base + only: + - /^v([0-9\.]+)$/ + except: + - branches + +.latest-vars: &latest-vars + RELEASE: YES + LATEST: YES + # Also push to beta tag + BETA: YES + +.beta: &beta + <<: *docker-base + only: + - /^v([0-9\.]+b\d+)$/ + except: + - branches + +.beta-vars: &beta-vars + RELEASE: YES + BETA: YES + +.dev: &dev + <<: *docker-base + only: + - dev + +.dev-vars: &dev-vars + DEV: YES + +# aarch64 +aarch64-beta-hassio: + <<: *beta + variables: + BETA: "YES" + BUILD_ARCH: aarch64 + BUILD_FROM: esphome/esphome-hassio-base-aarch64:1.0.0 + RELEASE: "YES" + IS_HASSIO: "YES" +#aarch64-dev-hassio: +# <<: *dev +# variables: +# BUILD_ARCH: aarch64 +# BUILD_FROM: esphome/esphome-hassio-base-aarch64:1.0.0 +# DEV: "YES" +# IS_HASSIO: "YES" +aarch64-latest-hassio: + <<: *latest + variables: + BETA: "YES" + BUILD_ARCH: aarch64 + BUILD_FROM: esphome/esphome-hassio-base-aarch64:1.0.0 + IS_HASSIO: "YES" + LATEST: "YES" + RELEASE: "YES" +amd64-beta-docker: + <<: *beta + variables: + BETA: "YES" + BUILD_ARCH: amd64 + BUILD_FROM: esphome/esphome-hassio-base-amd64:1.0.0 + IS_HASSIO: "NO" + RELEASE: "YES" +amd64-beta-hassio: + <<: *beta + variables: + BETA: "YES" + BUILD_ARCH: amd64 + BUILD_FROM: esphome/esphome-hassio-base-amd64:1.0.0 + IS_HASSIO: "YES" + RELEASE: "YES" +#amd64-dev-docker: +# <<: *dev +# variables: +# BUILD_ARCH: amd64 +# BUILD_FROM: esphome/esphome-base-amd64:1.0.0 +# DEV: "YES" +# IS_HASSIO: "NO" +#amd64-dev-hassio: +# <<: *dev +# variables: +# BUILD_ARCH: amd64 +# BUILD_FROM: esphome/esphome-hassio-base-amd64:1.0.0 +# DEV: "YES" +# IS_HASSIO: "YES" +amd64-latest-docker: + <<: *latest + variables: + BETA: "YES" + BUILD_ARCH: amd64 + BUILD_FROM: esphome/esphome-hassio-base-amd64:1.0.0 + IS_HASSIO: "NO" + LATEST: "YES" + RELEASE: "YES" +amd64-latest-hassio: + <<: *latest + variables: + BETA: "YES" + BUILD_ARCH: amd64 + BUILD_FROM: esphome/esphome-hassio-base-amd64:1.0.0 + IS_HASSIO: "YES" + LATEST: "YES" + RELEASE: "YES" +armhf-beta-hassio: + <<: *beta + variables: + BETA: "YES" + BUILD_ARCH: armhf + BUILD_FROM: esphome/esphome-hassio-base-armhf:1.0.0 + IS_HASSIO: "YES" + RELEASE: "YES" +#armhf-dev-hassio: +# <<: *dev +# variables: +# BUILD_ARCH: armhf +# BUILD_FROM: esphome/esphome-hassio-base-armhf:1.0.0 +# DEV: "YES" +# IS_HASSIO: "YES" +armhf-latest-hassio: + <<: *latest + variables: + BETA: "YES" + BUILD_ARCH: armhf + BUILD_FROM: esphome/esphome-hassio-base-armhf:1.0.0 + IS_HASSIO: "YES" + LATEST: "YES" + RELEASE: "YES" +i386-beta-docker: + <<: *beta + variables: + BETA: "YES" + BUILD_ARCH: i386 + BUILD_FROM: esphome/esphome-hassio-base-i386:1.0.0 + IS_HASSIO: "NO" + RELEASE: "YES" +i386-beta-hassio: + <<: *beta + variables: + BETA: "YES" + BUILD_ARCH: i386 + BUILD_FROM: esphome/esphome-hassio-base-i386:1.0.0 + IS_HASSIO: "YES" + RELEASE: "YES" +#i386-dev-docker: +# <<: *dev +# variables: +# BUILD_ARCH: i386 +# BUILD_FROM: esphome/esphome-hassio-base-i386:1.0.0 +# DEV: "YES" +# IS_HASSIO: "NO" +#i386-dev-hassio: +# <<: *dev +# variables: +# BUILD_ARCH: i386 +# BUILD_FROM: esphome/esphome-hassio-base-i386:1.0.0 +# DEV: "YES" +# IS_HASSIO: "YES" +i386-latest-docker: + <<: *latest + variables: + BETA: "YES" + BUILD_ARCH: i386 + BUILD_FROM: esphome/esphome-hassio-base-i386:1.0.0 + IS_HASSIO: "NO" + LATEST: "YES" + RELEASE: "YES" +i386-latest-hassio: + <<: *latest + variables: + BETA: "YES" + BUILD_ARCH: i386 + BUILD_FROM: esphome/esphome-hassio-base-i386:1.0.0 + IS_HASSIO: "YES" + LATEST: "YES" + RELEASE: "YES" diff --git a/README.md b/README.md index f3b990a2ba..61c0b91f51 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ -# ESPHome +# ESPHome [![Build Status](https://travis-ci.org/esphome/esphome.svg?branch=master)](https://travis-ci.org/esphome/esphome) [![Discord Chat](https://img.shields.io/discord/429907082951524364.svg)](https://discord.gg/KhAMKrd) [![GitHub release](https://img.shields.io/github/release/esphome/esphome.svg)](https://GitHub.com/esphome/esphome/releases/) -# TODO \ No newline at end of file +[![ESPHome Logo](https://esphome.io/_images/logo-text.png)](https://esphome.io/) + +**Documentation:** https://esphome.io/ + +For issues, please go to [the issue tracker](https://github.com/esphome/issues/issues). +For feature requests, please see [feature requests](https://github.com/esphome/feature-requests/issues). diff --git a/esphome/core.py b/esphome/core.py index ad1ced8160..2d59e4eefc 100644 --- a/esphome/core.py +++ b/esphome/core.py @@ -322,7 +322,7 @@ class EsphomeCore(object): if 'ethernet' in self.config: return self.config['ethernet'][CONF_USE_ADDRESS] - raise EsphomeError("No network configured") + return None @property def esphome_core_version(self): # type: () -> Dict[str, str] diff --git a/tests/test3.yaml b/tests/test3.yaml index 30c50603d3..16ab0546dc 100644 --- a/tests/test3.yaml +++ b/tests/test3.yaml @@ -2,9 +2,9 @@ esphome: name: $devicename platform: ESP8266 board: esp07 - # Use this for testing while developing: - # Note the travis check for esphome PRs will fail until the - # esphome-core PR has been merged. + # Use this for testing while developing: + # Note the travis check for esphome PRs will fail until the + # esphome-core PR has been merged. # esphome_core_version: # local: ~/path/to/esphome-core build_path: build/test3