mirror of
https://github.com/esphome/esphome.git
synced 2024-11-26 12:27:13 +01:00
347 lines
6.4 KiB
YAML
347 lines
6.4 KiB
YAML
---
|
|
# Based on https://gitlab.com/hassio-addons/addon-node-red/blob/master/.gitlab-ci.yml
|
|
variables:
|
|
DOCKER_DRIVER: overlay2
|
|
DOCKER_HOST: tcp://docker:2375/
|
|
BASE_VERSION: '1.5.1'
|
|
TZ: UTC
|
|
|
|
stages:
|
|
- lint
|
|
- test
|
|
- deploy
|
|
|
|
.lint: &lint
|
|
image: esphome/esphome-lint:latest
|
|
stage: lint
|
|
before_script:
|
|
- script/setup
|
|
tags:
|
|
- docker
|
|
|
|
.test: &test
|
|
image: esphome/esphome-lint:latest
|
|
stage: test
|
|
before_script:
|
|
- script/setup
|
|
tags:
|
|
- docker
|
|
|
|
.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}:${BASE_VERSION}
|
|
BUILD_TO=esphome/esphome-hassio-${BUILD_ARCH}
|
|
DOCKERFILE=docker/Dockerfile.hassio
|
|
else
|
|
BUILD_FROM=esphome/esphome-base-${BUILD_ARCH}:${BASE_VERSION}
|
|
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
|
|
|
|
lint-custom:
|
|
<<: *lint
|
|
script:
|
|
- script/ci-custom.py
|
|
|
|
lint-python:
|
|
<<: *lint
|
|
script:
|
|
- script/lint-python
|
|
|
|
lint-tidy:
|
|
<<: *lint
|
|
script:
|
|
- pio init --ide atom
|
|
- |
|
|
if ! patch -R -p0 -s -f --dry-run <script/.neopixelbus.patch; then
|
|
patch -p0 < script/.neopixelbus.patch
|
|
fi
|
|
- script/clang-tidy --all-headers --fix
|
|
- script/ci-suggest-changes
|
|
|
|
lint-format:
|
|
<<: *lint
|
|
script:
|
|
- script/clang-format -i
|
|
- script/ci-suggest-changes
|
|
|
|
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
|
|
<<: *lint
|
|
stage: deploy
|
|
script:
|
|
- pip install twine wheel
|
|
- python setup.py sdist bdist_wheel
|
|
- twine upload dist/*
|
|
|
|
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
|
|
|
|
.beta: &beta
|
|
<<: *docker-base
|
|
only:
|
|
- /^v([0-9\.]+b\d+)$/
|
|
except:
|
|
- branches
|
|
|
|
.dev: &dev
|
|
<<: *docker-base
|
|
only:
|
|
- dev
|
|
|
|
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"
|
|
armv7-beta-docker:
|
|
<<: *beta
|
|
variables:
|
|
BETA: "YES"
|
|
BUILD_ARCH: armv7
|
|
IS_HASSIO: "NO"
|
|
RELEASE: "YES"
|
|
armv7-beta-hassio:
|
|
<<: *beta
|
|
variables:
|
|
BETA: "YES"
|
|
BUILD_ARCH: armv7
|
|
IS_HASSIO: "YES"
|
|
RELEASE: "YES"
|
|
armv7-dev-docker:
|
|
<<: *dev
|
|
variables:
|
|
BUILD_ARCH: armv7
|
|
DEV: "YES"
|
|
IS_HASSIO: "NO"
|
|
armv7-dev-hassio:
|
|
<<: *dev
|
|
variables:
|
|
BUILD_ARCH: armv7
|
|
DEV: "YES"
|
|
IS_HASSIO: "YES"
|
|
armv7-latest-docker:
|
|
<<: *latest
|
|
variables:
|
|
BETA: "YES"
|
|
BUILD_ARCH: armv7
|
|
IS_HASSIO: "NO"
|
|
LATEST: "YES"
|
|
RELEASE: "YES"
|
|
armv7-latest-hassio:
|
|
<<: *latest
|
|
variables:
|
|
BETA: "YES"
|
|
BUILD_ARCH: armv7
|
|
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"
|