From d693254c1a8b19e02aca85934818a4e7b6dde661 Mon Sep 17 00:00:00 2001 From: Ce Gao Date: Mon, 31 Oct 2022 10:43:07 +0800 Subject: [PATCH] fix: Disable telemetry in CI (#1116) Signed-off-by: Ce Gao Signed-off-by: Ce Gao --- .github/workflows/CI.yml | 12 ++++++ .github/workflows/nightly.yml | 12 ++++++ pkg/app/app.go | 7 ++-- pkg/app/telemetry/reporter.go | 74 +++++++++++++++++++---------------- 4 files changed, 67 insertions(+), 38 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 3bc4d54c7..bb73388f3 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -51,6 +51,9 @@ jobs: skip-pkg-cache: true test: name: test + env: + # Disable telemetry. + ENVD_ANALYTICS: false strategy: matrix: os: [ubuntu-latest] @@ -84,6 +87,9 @@ jobs: path: coverage.out e2e-cli: name: e2e-cli + env: + # Disable telemetry. + ENVD_ANALYTICS: false strategy: matrix: os: [ubuntu-latest] @@ -117,6 +123,9 @@ jobs: path: e2e-cli-coverage.out e2e-lang: name: e2e-lang + env: + # Disable telemetry. + ENVD_ANALYTICS: false strategy: matrix: os: [ubuntu-latest] @@ -150,6 +159,9 @@ jobs: path: e2e-lang-coverage.out build: name: build + env: + # Disable telemetry. + ENVD_ANALYTICS: false strategy: matrix: os: [ubuntu-latest, macos-latest] diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index b6be09181..703182871 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -41,6 +41,9 @@ jobs: skip-pkg-cache: true test: name: test + env: + # Disable telemetry. + ENVD_ANALYTICS: false strategy: matrix: os: [ ubuntu-latest ] @@ -74,6 +77,9 @@ jobs: path: coverage.out e2e-cli: name: e2e-cli + env: + # Disable telemetry. + ENVD_ANALYTICS: false strategy: matrix: os: [ ubuntu-latest ] @@ -107,6 +113,9 @@ jobs: path: e2e-cli-coverage.out e2e-lang: name: e2e-lang + env: + # Disable telemetry. + ENVD_ANALYTICS: false strategy: matrix: os: [ ubuntu-latest ] @@ -203,6 +212,9 @@ jobs: run: make e2e-doc: name: e2e-doc + env: + # Disable telemetry. + ENVD_ANALYTICS: false strategy: matrix: os: [ubuntu-latest] diff --git a/pkg/app/app.go b/pkg/app/app.go index 21ca06239..c9dac54ca 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -131,10 +131,9 @@ func New() EnvdApp { } analytics := context.Bool(flag.FlagAnalytics) - if analytics { - if err := telemetry.Initialize(context.String("analytics-token")); err != nil { - return errors.Wrap(err, "failed to create telemetry client") - } + if err := telemetry.Initialize(analytics, + context.String("analytics-token")); err != nil { + return errors.Wrap(err, "failed to create telemetry client") } // TODO(gaocegege): Add a config struct to keep them. diff --git a/pkg/app/telemetry/reporter.go b/pkg/app/telemetry/reporter.go index 471ceb1b8..a0578688d 100644 --- a/pkg/app/telemetry/reporter.go +++ b/pkg/app/telemetry/reporter.go @@ -37,6 +37,7 @@ type Reporter interface { type defaultReporter struct { client segmentio.Client telemetryFile string + enabled bool UID string } @@ -46,10 +47,11 @@ var ( once sync.Once ) -func Initialize(token string) error { +func Initialize(enabled bool, token string) error { once.Do(func() { reporter = &defaultReporter{ - client: segmentio.New(token), + enabled: enabled, + client: segmentio.New(token), } }) return reporter.init() @@ -103,25 +105,27 @@ func (r *defaultReporter) init() error { r.UID = string(uid) logrus.WithField("UID", r.UID).Debug("telemetry initialization") - v := version.GetVersion() - logrus.Debug("sending telemetry") - if err := r.client.Enqueue(segmentio.Identify{ - UserId: r.UID, - Context: &segmentio.Context{ - OS: segmentio.OSInfo{ - Name: runtime.GOOS, - Version: runtime.GOARCH, + if r.enabled { + logrus.Debug("sending telemetry") + v := version.GetVersion() + if err := r.client.Enqueue(segmentio.Identify{ + UserId: r.UID, + Context: &segmentio.Context{ + OS: segmentio.OSInfo{ + Name: runtime.GOOS, + Version: runtime.GOARCH, + }, + App: segmentio.AppInfo{ + Name: "envd-cli", + Version: v.Version, + }, }, - App: segmentio.AppInfo{ - Name: "envd-cli", - Version: v.Version, - }, - }, - Timestamp: time.Now(), - Traits: segmentio.NewTraits(), - }); err != nil { - logrus.Warn("telemetry failed") - return nil + Timestamp: time.Now(), + Traits: segmentio.NewTraits(), + }); err != nil { + logrus.Warn("telemetry failed") + return nil + } } return nil } @@ -139,19 +143,21 @@ func (r *defaultReporter) dumpTelemetry() error { } func (r *defaultReporter) Telemetry(command string, runner *string) { - logrus.WithFields(logrus.Fields{ - "UID": r.UID, - "command": command, - }).Debug("sending telemetry track event") - t := segmentio.Track{ - UserId: r.UID, - Event: command, - Properties: segmentio.NewProperties(), - } - if runner != nil { - t.Properties = t.Properties.Set("runner", runner) - } - if err := r.client.Enqueue(t); err != nil { - logrus.Warn(err) + if r.enabled { + logrus.WithFields(logrus.Fields{ + "UID": r.UID, + "command": command, + }).Debug("sending telemetry track event") + t := segmentio.Track{ + UserId: r.UID, + Event: command, + Properties: segmentio.NewProperties(), + } + if runner != nil { + t.Properties = t.Properties.Set("runner", runner) + } + if err := r.client.Enqueue(t); err != nil { + logrus.Warn(err) + } } }