esphome/.gitlab-ci.yml

321 lines
8.3 KiB
YAML
Raw Normal View History

---
# Based on https://gitlab.com/hassio-addons/addon-node-red/blob/master/.gitlab-ci.yml
variables:
DOCKER_DRIVER: overlay2
stages:
- lint
2018-08-26 11:26:14 +02:00
- test
- build
- deploy
.lint: &lint
stage: lint
tags:
- python2.7
- esphomeyaml-lint
2018-08-26 11:26:14 +02:00
.test: &test
stage: test
before_script:
- pip install -e .
tags:
- python2.7
- esphomeyaml-test
variables:
TZ: UTC
cache:
paths:
- tests/build
.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
2018-09-26 18:39:41 +02:00
test1:
2018-08-26 11:26:14 +02:00
<<: *test
script:
- esphomeyaml tests/test1.yaml compile
2018-09-26 18:39:41 +02:00
test2:
<<: *test
script:
- esphomeyaml tests/test2.yaml compile
2018-08-26 11:26:14 +02:00
.build-hassio: &build-hassio
<<: *docker-builder
stage: build
script:
2018-11-03 16:24:26 +01:00
- docker run --rm --privileged hassioaddons/qemu-user-static:latest
- BUILD_FROM=homeassistant/${ADDON_ARCH}-base-ubuntu:latest
- ADDON_VERSION="${CI_COMMIT_TAG#v}"
- ADDON_VERSION="${ADDON_VERSION:-${CI_COMMIT_SHA:0:7}}"
2018-11-03 22:14:33 +01:00
- ESPHOMELIB_VERSION="${ESPHOMELIB_VERSION:-dev}"
2018-11-03 16:24:26 +01:00
- echo "Build from ${BUILD_FROM}"
- echo "Add-on version ${ADDON_VERSION}"
- echo "Esphomelib version ${ESPHOMELIB_VERSION}"
- echo "Tag ${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:dev"
- echo "Tag ${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}"
- |
2018-11-03 16:24:26 +01:00
docker build \
--build-arg "BUILD_FROM=${BUILD_FROM}" \
--build-arg "ADDON_ARCH=${ADDON_ARCH}" \
--build-arg "ADDON_VERSION=${ADDON_VERSION}" \
--build-arg "ESPHOMELIB_VERSION=${ESPHOMELIB_VERSION}" \
--tag "${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:dev" \
--tag "${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \
--file "docker/Dockerfile.hassio" \
.
- |
2018-11-03 16:24:26 +01:00
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
2018-10-20 18:20:21 +02:00
.deploy-release: &deploy-release
2018-08-26 11:26:14 +02:00
<<: *docker-builder
stage: deploy
script:
2018-11-03 16:24:26 +01:00
- version="${CI_COMMIT_TAG#v}"
2018-10-20 18:20:21 +02:00
- echo "Publishing release version ${version}"
2018-11-03 22:14:33 +01:00
- docker pull "${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}"
2018-11-03 16:24:26 +01:00
- docker login -u "$DOCKER_USER" -p "$DOCKER_PASSWORD"
2018-11-03 22:14:33 +01:00
- echo "Tag ${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${version}"
2018-11-03 16:24:26 +01:00
- |
docker tag \
2018-11-03 22:14:33 +01:00
"${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \
"${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${version}"
- docker push "${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${version}"
2018-11-03 16:24:26 +01:00
2018-11-03 22:14:33 +01:00
- echo "Tag ${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:latest"
2018-09-26 18:59:39 +02:00
- |
docker tag \
2018-11-03 22:14:33 +01:00
"${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \
"${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:latest"
- docker push "${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:latest"
2018-11-03 16:24:26 +01:00
2018-11-03 22:14:33 +01:00
- echo "Tag ${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:rc"
- |
docker tag \
2018-11-03 22:14:33 +01:00
"${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \
"${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:rc"
- docker push "${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:rc"
2018-11-03 16:24:26 +01:00
- echo "Tag ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}"
- |
docker tag \
2018-11-03 22:14:33 +01:00
"${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \
"ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}"
2018-11-03 16:24:26 +01:00
- docker push "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}"
- echo "Tag ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:latest"
- |
docker tag \
2018-11-03 22:14:33 +01:00
"${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \
"ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:latest"
2018-11-03 16:24:26 +01:00
- docker push "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:latest"
- echo "Tag ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc"
- |
docker tag \
2018-11-03 22:14:33 +01:00
"${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \
"ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc"
- docker push "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc"
2018-10-20 18:20:21 +02:00
only:
- /^v\d+\.\d+\.\d+$/
except:
- /^(?!master).+@/
.deploy-beta: &deploy-beta
<<: *docker-builder
stage: deploy
script:
2018-11-03 16:24:26 +01:00
- version="${CI_COMMIT_TAG#v}"
2018-10-20 18:20:21 +02:00
- echo "Publishing beta version ${version}"
2018-11-03 22:14:33 +01:00
- docker pull "${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}"
2018-11-03 16:24:26 +01:00
- docker login -u "$DOCKER_USER" -p "$DOCKER_PASSWORD"
2018-11-03 22:14:33 +01:00
- echo "Tag ${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${version}"
2018-11-03 16:24:26 +01:00
- |
docker tag \
2018-11-03 22:14:33 +01:00
"${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \
"${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${version}"
- docker push "${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${version}"
2018-11-03 16:24:26 +01:00
2018-11-03 22:14:33 +01:00
- echo "Tag ${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:rc"
2018-10-20 18:20:21 +02:00
- |
docker tag \
2018-11-03 22:14:33 +01:00
"${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \
"${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:rc"
- docker push "${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:rc"
2018-11-03 16:24:26 +01:00
- echo "Tag ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}"
2018-10-20 18:20:21 +02:00
- |
docker tag \
2018-11-03 22:14:33 +01:00
"${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \
2018-10-20 18:20:21 +02:00
"ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}"
2018-11-03 16:24:26 +01:00
- docker push "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${version}"
- echo "Tag ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc"
2018-10-20 18:20:21 +02:00
- |
docker tag \
2018-11-03 22:14:33 +01:00
"${CI_REGISTRY}/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}" \
2018-10-31 16:34:03 +01:00
"ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc"
- docker push "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:rc"
2018-10-20 18:20:21 +02:00
only:
- /^v\d+\.\d+\.\d+b\d+$/
except:
- /^(?!rc).+@/
# Build jobs
2018-08-26 11:26:14 +02:00
build:normal:
<<: *docker-builder
stage: build
script:
2018-11-03 22:14:33 +01:00
- docker build -t "${CI_REGISTRY}/esphomeyaml:dev" .
2018-08-26 11:26:14 +02:00
2018-11-03 16:24:26 +01:00
.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
2018-08-26 11:26:14 +02:00
<<: *build-hassio
2018-11-03 16:24:26 +01:00
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
2018-11-03 16:24:26 +01:00
ESPHOMELIB_VERSION: "${CI_COMMIT_TAG}"
2018-11-03 22:14:33 +01:00
#build:hassio-aarch64-edge:
# <<: *build-hassio-edge
# variables:
# ADDON_ARCH: aarch64
# DO_PUSH: "false"
#build:hassio-aarch64:
# <<: *build-hassio-release
# variables:
# ADDON_ARCH: aarch64
# ESPHOMELIB_VERSION: "${CI_COMMIT_TAG}"
2018-11-03 16:24:26 +01:00
build:hassio-i386-edge:
<<: *build-hassio-edge
variables:
ADDON_ARCH: i386
2018-11-03 16:24:26 +01:00
DO_PUSH: "false"
2018-11-03 16:24:26 +01:00
build:hassio-i386:
<<: *build-hassio-release
variables:
ADDON_ARCH: i386
2018-11-03 22:14:33 +01:00
ESPHOMELIB_VERSION: "${CI_COMMIT_TAG}"
2018-11-03 16:24:26 +01:00
build:hassio-amd64-edge:
<<: *build-hassio-edge
variables:
ADDON_ARCH: amd64
DO_PUSH: "false"
build:hassio-amd64:
<<: *build-hassio-release
variables:
ADDON_ARCH: amd64
2018-11-03 22:14:33 +01:00
ESPHOMELIB_VERSION: "${CI_COMMIT_TAG}"
# Deploy jobs
2018-10-20 18:20:21 +02:00
deploy-release:armhf:
<<: *deploy-release
variables:
ADDON_ARCH: armhf
2018-10-20 18:20:21 +02:00
deploy-beta:armhf:
<<: *deploy-beta
variables:
ADDON_ARCH: armhf
2018-11-03 22:14:33 +01:00
#deploy-release:aarch64:
# <<: *deploy-release
# variables:
# ADDON_ARCH: aarch64
#
#deploy-beta:aarch64:
# <<: *deploy-beta
# variables:
# ADDON_ARCH: aarch64
2018-10-20 18:20:21 +02:00
deploy-release:i386:
<<: *deploy-release
variables:
ADDON_ARCH: i386
deploy-beta:i386:
<<: *deploy-beta
variables:
ADDON_ARCH: i386
2018-10-20 18:20:21 +02:00
deploy-release:amd64:
<<: *deploy-release
variables:
ADDON_ARCH: amd64
deploy-beta:amd64:
<<: *deploy-beta
variables:
ADDON_ARCH: amd64
2018-10-20 18:20:21 +02:00
.deploy-pypi: &deploy-pypi
2018-08-26 11:26:14 +02:00
stage: deploy
2018-10-20 18:26:44 +02:00
before_script:
- pip install -e .
- pip install twine
script:
- python setup.py sdist
- twine upload dist/*
tags:
- python2.7
- esphomeyaml-test
2018-10-20 18:20:21 +02:00
deploy-release:pypi:
<<: *deploy-pypi
2018-08-26 11:26:14 +02:00
only:
2018-10-20 18:20:21 +02:00
- /^v\d+\.\d+\.\d+$/
2018-08-26 11:26:14 +02:00
except:
- /^(?!master).+@/
2018-10-20 18:20:21 +02:00
deploy-beta:pypi:
<<: *deploy-pypi
only:
- /^v\d+\.\d+\.\d+b\d+$/
except:
- /^(?!rc).+@/