diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 294b5ab1db9..00000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,272 +0,0 @@ -# Python CircleCI 2.0 configuration file -# -# Check https://circleci.com/docs/2.0/language-python/ for more details -# -version: 2.1 - -executors: - - python: - parameters: - tag: - type: string - default: latest - docker: - - image: circleci/python:<< parameters.tag >> - - image: circleci/buildpack-deps:stretch - working_directory: ~/repo - -commands: - - docker-prereqs: - description: Set up docker prerequisite requirement - steps: - - run: sudo apt-get update && sudo apt-get install -y --no-install-recommends - libudev-dev libavformat-dev libavcodec-dev libavdevice-dev libavutil-dev - libswscale-dev libswresample-dev libavfilter-dev - - install-requirements: - description: Set up venv and install requirements python packages with cache support - parameters: - python: - type: string - default: latest - all: - description: pip install -r requirements_all.txt - type: boolean - default: false - test: - description: pip install -r requirements_test.txt - type: boolean - default: false - test_all: - description: pip install -r requirements_test_all.txt - type: boolean - default: false - steps: - - restore_cache: - keys: - - v1-<< parameters.python >>-{{ checksum "homeassistant/package_constraints.txt" }}-<<# parameters.all >>{{ checksum "requirements_all.txt" }}<>-<<# parameters.test >>{{ checksum "requirements_test.txt" }}<>-<<# parameters.test_all >>{{ checksum "requirements_test_all.txt" }}<> - - run: - name: install dependencies - command: | - python3 -m venv venv - . venv/bin/activate - pip install -q -U pip - pip install -q -U setuptools - <<# parameters.all >>pip install -q --progress-bar off -r requirements_all.txt -c homeassistant/package_constraints.txt<> - <<# parameters.test >>pip install -q --progress-bar off -r requirements_test.txt -c homeassistant/package_constraints.txt<> - <<# parameters.test_all >>pip install -q --progress-bar off -r requirements_test_all.txt -c homeassistant/package_constraints.txt<> - no_output_timeout: 15m - - save_cache: - paths: - - ./venv - key: v1-<< parameters.python >>-{{ checksum "homeassistant/package_constraints.txt" }}-<<# parameters.all >>{{ checksum "requirements_all.txt" }}<>-<<# parameters.test >>{{ checksum "requirements_test.txt" }}<>-<<# parameters.test_all >>{{ checksum "requirements_test_all.txt" }}<> - - install: - description: Install Home Assistant - steps: - - run: - name: install - command: | - . venv/bin/activate - pip install -q --progress-bar off -e . - -jobs: - - static-check: - executor: - name: python - tag: 3.5.5-stretch - - steps: - - checkout - - docker-prereqs - - install-requirements: - python: 3.5.5-stretch - test: true - - - run: - name: run static check - command: | - . venv/bin/activate - flake8 homeassistant tests script - - - run: - name: run static type check - command: | - . venv/bin/activate - TYPING_FILES=$(cat mypyrc) - mypy $TYPING_FILES - - - install - - - run: - name: validate manifests - command: | - . venv/bin/activate - python -m script.hassfest validate - - - run: - name: run gen_requirements_all - command: | - . venv/bin/activate - python script/gen_requirements_all.py validate - - pre-install-all-requirements: - executor: - name: python - tag: 3.5.5-stretch - - steps: - - checkout - - docker-prereqs - - install-requirements: - python: 3.5.5-stretch - all: true - test: true - - pylint: - executor: - name: python - tag: 3.5.5-stretch - parallelism: 2 - - steps: - - checkout - - docker-prereqs - - install-requirements: - python: 3.5.5-stretch - all: true - test: true - - install - - - run: - name: run pylint - command: | - . venv/bin/activate - PYFILES=$(circleci tests glob "homeassistant/**/*.py" | circleci tests split) - pylint ${PYFILES} - no_output_timeout: 15m - - pre-test: - parameters: - python: - type: string - executor: - name: python - tag: << parameters.python >> - - steps: - - checkout - - docker-prereqs - - install-requirements: - python: << parameters.python >> - test_all: true - - test: - parameters: - python: - type: string - executor: - name: python - tag: << parameters.python >> - parallelism: 2 - - steps: - - checkout - - docker-prereqs - - install-requirements: - python: << parameters.python >> - test_all: true - - install - - - run: - name: run tests with code coverage - command: | - . venv/bin/activate - CC_SWITCH="--cov --cov-report=" - TESTFILES=$(circleci tests glob "tests/**/test_*.py" | circleci tests split --split-by=timings) - pytest --timeout=9 --durations=10 --junitxml=test-reports/homeassistant/results.xml -qq -o junit_family=xunit2 -o junit_suite_name=homeassistant -o console_output_style=count -p no:sugar $CC_SWITCH -- ${TESTFILES} - script/check_dirty - codecov - - - store_test_results: - path: test-reports - - - store_artifacts: - path: htmlcov - destination: cov-reports - - - store_artifacts: - path: test-reports - destination: test-reports - - # This job use machine executor, e.g. classic CircleCI VM because we need both lokalise-cli and a Python runtime. - # Classic CircleCI included python 2.7.12 and python 3.5.2 managed by pyenv, the Python version may need change if - # CircleCI changed its VM in future. - upload-translations: - machine: true - - steps: - - checkout - - - run: - name: upload english translations - command: | - pyenv versions - pyenv global 3.5.2 - docker pull lokalise/lokalise-cli@sha256:2198814ebddfda56ee041a4b427521757dd57f75415ea9693696a64c550cef21 - script/translations_upload - -workflows: - version: 2 - build: - jobs: - - static-check - - pre-install-all-requirements: - requires: - - static-check - - pylint: - requires: - - pre-install-all-requirements - - pre-test: - name: pre-test 3.5.5 - requires: - - static-check - python: 3.5.5-stretch - - pre-test: - name: pre-test 3.6 - requires: - - static-check - python: 3.6-stretch - - pre-test: - name: pre-test 3.7 - requires: - - static-check - python: 3.7-stretch - - test: - name: test 3.5.5 - requires: - - pre-test 3.5.5 - python: 3.5.5-stretch - - test: - name: test 3.6 - requires: - - pre-test 3.6 - python: 3.6-stretch - - test: - name: test 3.7 - requires: - - pre-test 3.7 - python: 3.7-stretch - # CircleCI does not allow failure yet - # - test: - # name: test 3.8 - # python: 3.8-rc-stretch - - upload-translations: - requires: - - static-check - filters: - branches: - only: dev