Skip to content

Commit

Permalink
Merge pull request #1184 from diggerhq/feat/revert-telemetry
Browse files Browse the repository at this point in the history
Revert telemetry changes
  • Loading branch information
ZIJ committed Feb 22, 2024
2 parents c316f38 + c6b1129 commit 2bf588f
Show file tree
Hide file tree
Showing 11 changed files with 190 additions and 45 deletions.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ Not sure where to get started? You can:
- [Book a free, non-pressure pairing session / code walkthrough with one of our teammates](https://calendly.com/diggerdev/digger-pro-demo-clone)!
- Join our <a href="https://join.slack.com/t/diggertalk/shared_invite/zt-1tocl4w0x-E3RkpPiK7zQkehl8O78g8Q">Slack</a>, and ask us any questions there.

## Telemetry

Digger collects anonymized telemetry. See [usage.go](https://github.com/diggerhq/digger/blob/develop/cli/pkg/usage/usage.go) for detail. You can disable telemetry collection either by setting `telemetry: false` in digger.yml, or by setting the `TELEMETRY` env variable to `false`.

## Running migrations

```
Expand Down
39 changes: 35 additions & 4 deletions cli/pkg/usage/usage.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@ package usage

import (
"bytes"
"crypto/sha256"
"encoding/hex"
"encoding/json"
configuration "github.com/diggerhq/digger/libs/digger_config"
"log"
"net/http"
"os"
)

var telemetry = true
var source = "unknown"

type UsageRecord struct {
Expand All @@ -18,8 +22,12 @@ type UsageRecord struct {
}

func SendUsageRecord(repoOwner string, eventName string, action string) error {
h := sha256.New()
h.Write([]byte(repoOwner))
sha := h.Sum(nil)
shaStr := hex.EncodeToString(sha)
payload := UsageRecord{
UserId: repoOwner,
UserId: shaStr,
EventName: eventName,
Action: action,
Token: "diggerABC@@1998fE",
Expand All @@ -28,8 +36,12 @@ func SendUsageRecord(repoOwner string, eventName string, action string) error {
}

func SendLogRecord(repoOwner string, message string) error {
h := sha256.New()
h.Write([]byte(repoOwner))
sha := h.Sum(nil)
shaStr := hex.EncodeToString(sha)
payload := UsageRecord{
UserId: repoOwner,
UserId: shaStr,
EventName: "log from " + source,
Action: message,
Token: "diggerABC@@1998fE",
Expand All @@ -38,6 +50,9 @@ func SendLogRecord(repoOwner string, message string) error {
}

func sendPayload(payload interface{}) error {
if !telemetry {
return nil
}
jsonData, err := json.Marshal(payload)
if err != nil {
log.Printf("Error marshalling usage record: %v", err)
Expand All @@ -49,15 +64,20 @@ func sendPayload(payload interface{}) error {

resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Printf("Error sending usage record: %v. If you are using digger in a firewalled environment "+
"please whitelist analytics.digger.dev", err)
log.Printf("Error sending telmetry: %v. If you are using digger in a firewalled environment, "+
"please consider whitelisting analytics.digger.dev. You can also disable this message by setting "+
"telemetry: false in digger.yml", err)
return err
}
defer resp.Body.Close()
return nil
}

func init() {
currentDir, err := os.Getwd()
if err != nil {
log.Printf("Failed to get current dir. %s", err)
}
notEmpty := func(key string) bool {
return os.Getenv(key) != ""
}
Expand All @@ -75,4 +95,15 @@ func init() {
source = "azure"
}

config, _, _, err := configuration.LoadDiggerConfig(currentDir)
if err != nil {
return
}
if !config.Telemetry {
telemetry = false
} else if os.Getenv("TELEMETRY") == "false" {
telemetry = false
} else {
telemetry = true
}
}
5 changes: 5 additions & 0 deletions docs/howto/disable-telemetry.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
title: "Disable telemetry"
---

Digger collects anonymized telemetry. See [usage.go](https://github.com/diggerhq/digger/blob/develop/cli/pkg/usage/usage.go) for detail. You can disable telemetry collection either by setting `telemetry: false` in digger.yml, or by setting the `TELEMETRY` env variable to `false`.
1 change: 1 addition & 0 deletions docs/mint.json
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
"howto/custom-commands",
"howto/destroy-manual",
"howto/disable-auto-checkout",
"howto/disable-telemetry",
"howto/drift-detection",
"howto/generate-projects",
"howto/include-exclude-patterns",
Expand Down
60 changes: 30 additions & 30 deletions docs/reference/digger.yml.mdx

Large diffs are not rendered by default.

108 changes: 100 additions & 8 deletions go.work.sum

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions libs/digger_config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ type DiggerConfig struct {
DependencyConfiguration DependencyConfiguration
Projects []Project
AutoMerge bool
Telemetry bool
Workflows map[string]Workflow
}

Expand Down
6 changes: 6 additions & 0 deletions libs/digger_config/converters.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,12 @@ func ConvertDiggerYamlToConfig(diggerYaml *DiggerConfigYaml) (*DiggerConfig, gra
diggerConfig.AutoMerge = false
}

if diggerYaml.Telemetry != nil {
diggerConfig.Telemetry = *diggerYaml.Telemetry
} else {
diggerConfig.Telemetry = true
}

// if workflow block is not specified in yaml we create a default one, and add it to every project
if diggerYaml.Workflows != nil {
workflows := copyWorkflows(diggerYaml.Workflows)
Expand Down
2 changes: 2 additions & 0 deletions libs/digger_config/digger_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -407,6 +407,8 @@ func hydrateDiggerConfigYamlWithTerragrunt(configYaml *DiggerConfigYaml, parsing

func AutoDetectDiggerConfig(workingDir string) (*DiggerConfigYaml, error) {
configYaml := &DiggerConfigYaml{}
telemetry := true
configYaml.Telemetry = &telemetry

terragruntDirWalker := &FileSystemTerragruntDirWalker{}
terraformDirWalker := &FileSystemTopLevelTerraformDirWalker{}
Expand Down
8 changes: 5 additions & 3 deletions libs/digger_config/digger_config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ func TestNoDiggerYaml(t *testing.T) {
assert.NotNil(t, dg, "expected digger digger_config to be not nil")
assert.Equal(t, 1, len(dg.Projects))
assert.Equal(t, false, dg.AutoMerge)
assert.Equal(t, true, dg.Telemetry)
assert.Equal(t, 1, len(dg.Workflows))
assert.Equal(t, "default", dg.Projects[0].Name)
assert.Equal(t, "./", dg.Projects[0].Dir)
Expand Down Expand Up @@ -132,6 +133,7 @@ projects:
assert.NotNil(t, dg, "expected digger digger_config to be not nil")
assert.Equal(t, 1, len(dg.Projects))
assert.Equal(t, false, dg.AutoMerge)
assert.Equal(t, true, dg.Telemetry)
assert.Equal(t, 1, len(dg.Workflows))

assert.Equal(t, "prod", dg.Projects[0].Name)
Expand Down Expand Up @@ -234,7 +236,7 @@ workflows:
steps:
- init:
extra_args: ["-lock=false"]
- plan:
- plan:
extra_args: ["-lock=false"]
- run: echo "hello"
apply:
Expand Down Expand Up @@ -283,7 +285,7 @@ workflows:
- run: rm -rf .terraform
- init
- plan:
extra_args: ["-var-file=vars/dev.tfvars"]
extra_args: ["-var-file=vars/dev.tfvars"]
default:
plan:
steps:
Expand Down Expand Up @@ -567,7 +569,7 @@ workflows:
default:
plan:
steps:
- init:
- init:
- plan:
extra_args: ["-var-file=$ENV_NAME"]
`
Expand Down
1 change: 1 addition & 0 deletions libs/digger_config/yaml.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ type DiggerConfigYaml struct {
Projects []*ProjectYaml `yaml:"projects"`
AutoMerge *bool `yaml:"auto_merge"`
Workflows map[string]*WorkflowYaml `yaml:"workflows"`
Telemetry *bool `yaml:"telemetry,omitempty"`
GenerateProjectsConfig *GenerateProjectsConfigYaml `yaml:"generate_projects"`
}

Expand Down

0 comments on commit 2bf588f

Please sign in to comment.