--- # Based on https://gitlab.com/hassio-addons/addon-node-red/blob/master/.gitlab-ci.yml variables: DOCKER_DRIVER: overlay2 stages: - lint - test - build - deploy .lint: &lint stage: lint before_script: - pip install -e . tags: - python2.7 - esphomeyaml-lint .test: &test stage: test before_script: - pip install -e . tags: - python2.7 - esphomeyaml-test variables: TZ: UTC .docker-builder: &docker-builder before_script: - docker info - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY" services: - docker:dind tags: - hassio-builder flake8: <<: *lint script: - flake8 esphomeyaml pylint: <<: *lint script: - pylint esphomeyaml test1: <<: *test script: - esphomeyaml tests/test1.yaml compile test2: <<: *test script: - esphomeyaml tests/test2.yaml compile .build-hassio: &build-hassio <<: *docker-builder stage: build script: - docker run --rm --privileged hassioaddons/qemu-user-static:latest - BUILD_FROM=hassioaddons/ubuntu-base-${ADDON_ARCH}:2.2.0 - ADDON_VERSION="${CI_COMMIT_TAG#v}" - ADDON_VERSION="${ADDON_VERSION:-${CI_COMMIT_SHA:0:7}}" - echo "Build from ${BUILD_FROM}" - echo "Add-on version ${ADDON_VERSION}" - echo "Tag ${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:dev" - echo "Tag ${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" - | docker build \ --build-arg "BUILD_FROM=${BUILD_FROM}" \ --build-arg "BUILD_DATE=$(date +"%Y-%m-%dT%H:%M:%SZ")" \ --build-arg "BUILD_ARCH=${ADDON_ARCH}" \ --build-arg "BUILD_REF=${CI_COMMIT_SHA}" \ --build-arg "BUILD_VERSION=${ADDON_VERSION}" \ --tag "${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:dev" \ --tag "${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \ --file "docker/Dockerfile.hassio" \ . - | if [ "${DO_PUSH:-true}" = true ]; then echo "Pushing to CI registry" docker push ${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA} docker push ${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:dev fi # Generic deploy template .deploy-release: &deploy-release <<: *docker-builder stage: deploy script: - version="${CI_COMMIT_TAG#v}" - echo "Publishing release version ${version}" - docker pull "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" - docker login -u "$DOCKER_USER" -p "$DOCKER_PASSWORD" - echo "Tag ${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}" - | docker tag \ "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \ "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}" - docker push "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}" - echo "Tag ${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:latest" - | docker tag \ "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \ "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:latest" - docker push "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:latest" - echo "Tag ${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc" - | docker tag \ "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \ "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc" - docker push "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc" - echo "Tag ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}" - | docker tag \ "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \ "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}" - docker push "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}" - echo "Tag ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:latest" - | docker tag \ "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}" \ "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:latest" - docker push "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:latest" - echo "Tag ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc" - | docker tag \ "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}" \ "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc" - docker push "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc" only: - /^v\d+\.\d+\.\d+$/ except: - /^(?!master).+@/ .deploy-beta: &deploy-beta <<: *docker-builder stage: deploy script: - version="${CI_COMMIT_TAG#v}" - echo "Publishing beta version ${version}" - docker pull "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" - docker login -u "$DOCKER_USER" -p "$DOCKER_PASSWORD" - echo "Tag ${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}" - | docker tag \ "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \ "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}" - docker push "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}" - echo "Tag ${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc" - | docker tag \ "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \ "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc" - docker push "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc" - echo "Tag ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}" - | docker tag \ "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \ "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}" - docker push "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}" - echo "Tag ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc" - | docker tag \ "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}" \ "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc" - docker push "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc" only: - /^v\d+\.\d+\.\d+b\d+$/ except: - /^(?!rc).+@/ # Build jobs build:normal: <<: *docker-builder stage: build script: - docker build -t "${CI_REGISTRY}/ottowinter/esphomeyaml:dev" . .build-hassio-edge: &build-hassio-edge <<: *build-hassio except: - /^v\d+\.\d+\.\d+$/ - /^v\d+\.\d+\.\d+b\d+$/ .build-hassio-release: &build-hassio-release <<: *build-hassio only: - /^v\d+\.\d+\.\d+$/ - /^v\d+\.\d+\.\d+b\d+$/ build:hassio-armhf-edge: <<: *build-hassio-edge variables: ADDON_ARCH: armhf DO_PUSH: "false" build:hassio-armhf: <<: *build-hassio-release variables: ADDON_ARCH: armhf #build:hassio-aarch64-edge: # <<: *build-hassio-edge # variables: # ADDON_ARCH: aarch64 # DO_PUSH: "false" #build:hassio-aarch64: # <<: *build-hassio-release # variables: # ADDON_ARCH: aarch64 build:hassio-i386-edge: <<: *build-hassio-edge variables: ADDON_ARCH: i386 DO_PUSH: "false" build:hassio-i386: <<: *build-hassio-release variables: ADDON_ARCH: i386 build:hassio-amd64-edge: <<: *build-hassio-edge variables: ADDON_ARCH: amd64 DO_PUSH: "false" build:hassio-amd64: <<: *build-hassio-release variables: ADDON_ARCH: amd64 # Deploy jobs deploy-release:armhf: <<: *deploy-release variables: ADDON_ARCH: armhf deploy-beta:armhf: <<: *deploy-beta variables: ADDON_ARCH: armhf #deploy-release:aarch64: # <<: *deploy-release # variables: # ADDON_ARCH: aarch64 #deploy-beta:aarch64: # <<: *deploy-beta # variables: # ADDON_ARCH: aarch64 deploy-release:i386: <<: *deploy-release variables: ADDON_ARCH: i386 deploy-beta:i386: <<: *deploy-beta variables: ADDON_ARCH: i386 deploy-release:amd64: <<: *deploy-release variables: ADDON_ARCH: amd64 deploy-beta:amd64: <<: *deploy-beta variables: ADDON_ARCH: amd64 .deploy-pypi: &deploy-pypi stage: deploy before_script: - pip install -e . - pip install twine script: - python setup.py sdist - twine upload dist/* tags: - python2.7 - esphomeyaml-test 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).+@/