--- # 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 - 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: - docker .test: &test image: esphome/esphome-base-amd64 stage: test before_script: - pip install -e . tags: - docker variables: TZ: UTC .docker-base: &docker-base image: esphome/esphome-base-builder before_script: - docker info - 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.3.0 BUILD_TO=esphome/esphome-hassio-${BUILD_ARCH} DOCKERFILE=docker/Dockerfile.hassio else BUILD_FROM=esphome/esphome-base-${BUILD_ARCH}:1.3.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: - docker stage: deploy flake8: <<: *lint script: - flake8 esphome pylint: <<: *lint script: - pylint esphome test1: <<: *test script: - esphome tests/test1.yaml compile test2: <<: *test script: - esphome tests/test2.yaml compile test3: <<: *test script: - esphome tests/test3.yaml compile .deploy-pypi: &deploy-pypi stage: deploy image: python:2.7 before_script: - pip install -e . - pip install twine script: - python setup.py sdist bdist_wheel - twine upload dist/* tags: - docker deploy-release:pypi: <<: *deploy-pypi only: - /^v\d+\.\d+\.\d+$/ except: - /^(?!master).+@/ deploy-beta:pypi: <<: *deploy-pypi only: - /^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-beta-docker: # <<: *beta # variables: # BETA: "YES" # BUILD_ARCH: aarch64 # IS_HASSIO: "NO" # RELEASE: "YES" #aarch64-beta-hassio: # <<: *beta # variables: # BETA: "YES" # BUILD_ARCH: aarch64 # IS_HASSIO: "YES" # RELEASE: "YES" #aarch64-dev-docker: # <<: *dev # variables: # BUILD_ARCH: aarch64 # DEV: "YES" # IS_HASSIO: "NO" #aarch64-dev-hassio: # <<: *dev # variables: # BUILD_ARCH: aarch64 # DEV: "YES" # IS_HASSIO: "YES" #aarch64-latest-docker: # <<: *latest # variables: # BETA: "YES" # BUILD_ARCH: aarch64 # IS_HASSIO: "NO" # LATEST: "YES" # RELEASE: "YES" #aarch64-latest-hassio: # <<: *latest # variables: # BETA: "YES" # BUILD_ARCH: aarch64 # IS_HASSIO: "YES" # LATEST: "YES" # RELEASE: "YES" amd64-beta-docker: <<: *beta variables: BETA: "YES" BUILD_ARCH: amd64 IS_HASSIO: "NO" RELEASE: "YES" amd64-beta-hassio: <<: *beta variables: BETA: "YES" BUILD_ARCH: amd64 IS_HASSIO: "YES" RELEASE: "YES" amd64-dev-docker: <<: *dev variables: BUILD_ARCH: amd64 DEV: "YES" IS_HASSIO: "NO" amd64-dev-hassio: <<: *dev variables: BUILD_ARCH: amd64 DEV: "YES" IS_HASSIO: "YES" amd64-latest-docker: <<: *latest variables: BETA: "YES" BUILD_ARCH: amd64 IS_HASSIO: "NO" LATEST: "YES" RELEASE: "YES" amd64-latest-hassio: <<: *latest variables: BETA: "YES" BUILD_ARCH: amd64 IS_HASSIO: "YES" LATEST: "YES" RELEASE: "YES" armhf-beta-docker: <<: *beta variables: BETA: "YES" BUILD_ARCH: armhf IS_HASSIO: "NO" RELEASE: "YES" armhf-beta-hassio: <<: *beta variables: BETA: "YES" BUILD_ARCH: armhf IS_HASSIO: "YES" RELEASE: "YES" armhf-dev-docker: <<: *dev variables: BUILD_ARCH: armhf DEV: "YES" IS_HASSIO: "NO" armhf-dev-hassio: <<: *dev variables: BUILD_ARCH: armhf DEV: "YES" IS_HASSIO: "YES" armhf-latest-docker: <<: *latest variables: BETA: "YES" BUILD_ARCH: armhf IS_HASSIO: "NO" LATEST: "YES" RELEASE: "YES" armhf-latest-hassio: <<: *latest variables: BETA: "YES" BUILD_ARCH: armhf IS_HASSIO: "YES" LATEST: "YES" RELEASE: "YES" i386-beta-docker: <<: *beta variables: BETA: "YES" BUILD_ARCH: i386 IS_HASSIO: "NO" RELEASE: "YES" i386-beta-hassio: <<: *beta variables: BETA: "YES" BUILD_ARCH: i386 IS_HASSIO: "YES" RELEASE: "YES" i386-dev-docker: <<: *dev variables: BUILD_ARCH: i386 DEV: "YES" IS_HASSIO: "NO" i386-dev-hassio: <<: *dev variables: BUILD_ARCH: i386 DEV: "YES" IS_HASSIO: "YES" i386-latest-docker: <<: *latest variables: BETA: "YES" BUILD_ARCH: i386 IS_HASSIO: "NO" LATEST: "YES" RELEASE: "YES" i386-latest-hassio: <<: *latest variables: BETA: "YES" BUILD_ARCH: i386 IS_HASSIO: "YES" LATEST: "YES" RELEASE: "YES"