diff --git a/platformio/app.py b/platformio/app.py index c7776827..b77e481d 100644 --- a/platformio/app.py +++ b/platformio/app.py @@ -7,7 +7,7 @@ from os.path import isfile, join from platformio import __version__ from platformio.exception import InvalidSettingName, InvalidSettingValue -from platformio.util import get_home_dir +from platformio.util import get_home_dir, is_ci DEFAULT_SETTINGS = { "check_platformio_interval": { @@ -109,8 +109,7 @@ def get_setting(name): if name == "enable_prompts": # disable prompts for Continuous Integration systems # and when global "--force" option is set - if any([getenv("CI", "").lower() == "true", - get_session_var("force_option")]): + if any([is_ci(), get_session_var("force_option")]): return False _env_name = "PLATFORMIO_SETTING_%s" % name.upper() diff --git a/platformio/telemetry.py b/platformio/telemetry.py index 6c666943..3426e9d5 100644 --- a/platformio/telemetry.py +++ b/platformio/telemetry.py @@ -7,6 +7,7 @@ import re import sys import threading import uuid +from os import getenv from time import time import click @@ -197,6 +198,32 @@ def _finalize(): def on_command(ctx): # pylint: disable=W0613 mp = MeasurementProtocol() mp.send("screenview") + if util.is_ci(): + measure_ci() + + +def measure_ci(): + event = { + "category": "CI", + "action": "NoName", + "label": None + } + + envmap = { + "APPVEYOR": {"label": getenv("APPVEYOR_REPO_NAME")}, + "CIRCLECI": {"label": "%s/%s" % (getenv("CIRCLE_PROJECT_USERNAME"), + getenv("CIRCLE_PROJECT_REPONAME"))}, + "TRAVIS": {"label": getenv("TRAVIS_REPO_SLUG")}, + "SHIPPABLE": {"label": getenv("REPO_NAME")}, + "DRONE": {"label": getenv("DRONE_REPO_SLUG")} + } + + for key, value in envmap.iteritems(): + if getenv(key, "").lower() != "true": + continue + event.update({"action": key, "label": value['label']}) + + on_event(**event) def on_run_environment(options, targets):