Skip to content

Commit 7c91c73

Browse files
authored
add more telemetry (#102)
* add more telemetry
1 parent 4393d68 commit 7c91c73

File tree

2 files changed

+56
-26
lines changed

2 files changed

+56
-26
lines changed

cmd/digger/main.go

Lines changed: 37 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
)
1212

1313
func main() {
14+
utils.SendUsageRecord("", "log", "initialize")
1415
args := os.Args[1:]
1516
if len(args) > 0 && args[0] == "version" {
1617
fmt.Println(utils.GetVersion())
@@ -21,39 +22,34 @@ func main() {
2122
os.Exit(0)
2223
}
2324

24-
diggerConfig, err := digger.NewDiggerConfig("")
25-
if err != nil {
26-
fmt.Printf("Failed to read digger config. %s\n", err)
27-
os.Exit(1)
28-
}
29-
println("Digger config read successfully")
30-
31-
lock, err := utils.GetLock()
32-
if err != nil {
33-
fmt.Printf("Failed to create lock provider. %s\n", err)
34-
os.Exit(2)
35-
}
36-
println("Lock provider has been created successfully")
37-
3825
ghToken := os.Getenv("GITHUB_TOKEN")
3926
if ghToken == "" {
40-
println("GITHUB_TOKEN is not defined")
41-
os.Exit(3)
27+
reportErrorAndExit("", "GITHUB_TOKEN is not defined", 1)
4228
}
4329

4430
ghContext := os.Getenv("GITHUB_CONTEXT")
4531
if ghContext == "" {
46-
fmt.Printf("GITHUB_CONTEXT is not defined. %s\n", err)
47-
os.Exit(4)
32+
reportErrorAndExit("", "GITHUB_CONTEXT is not defined", 2)
4833
}
4934

5035
parsedGhContext, err := models.GetGitHubContext(ghContext)
5136
if err != nil {
52-
fmt.Printf("failed to parse GitHub context. %s\n", err.Error())
53-
os.Exit(5)
37+
reportErrorAndExit("", fmt.Sprintf("Failed to parse GitHub context. %s", err), 3)
5438
}
5539
println("GitHub context parsed successfully")
5640

41+
diggerConfig, err := digger.NewDiggerConfig("")
42+
if err != nil {
43+
reportErrorAndExit(parsedGhContext.RepositoryOwner, fmt.Sprintf("Failed to read Digger config. %s", err), 4)
44+
}
45+
println("Digger config read successfully")
46+
47+
lock, err := utils.GetLock()
48+
if err != nil {
49+
reportErrorAndExit(parsedGhContext.RepositoryOwner, fmt.Sprintf("Failed to create lock provider. %s", err), 5)
50+
}
51+
println("Lock provider has been created successfully")
52+
5753
ghEvent := parsedGhContext.Event
5854
eventName := parsedGhContext.EventName
5955
splitRepositoryName := strings.Split(parsedGhContext.Repository, "/")
@@ -62,8 +58,7 @@ func main() {
6258

6359
impactedProjects, prNumber, err := digger.ProcessGitHubEvent(ghEvent, diggerConfig, githubPrService)
6460
if err != nil {
65-
fmt.Printf("failed to process GitHub event, %v", err)
66-
os.Exit(6)
61+
reportErrorAndExit(repoOwner, fmt.Sprintf("Failed to process GitHub event. %s", err), 6)
6762
}
6863
println("GitHub event processed successfully")
6964

@@ -74,15 +69,31 @@ func main() {
7469

7570
commandsToRunPerProject, err := digger.ConvertGithubEventToCommands(ghEvent, impactedProjects)
7671
if err != nil {
77-
fmt.Printf("failed to convert event to command, %v", err)
78-
os.Exit(7)
72+
reportErrorAndExit(repoOwner, fmt.Sprintf("Failed to convert GitHub event to commands. %s", err), 7)
7973
}
8074
println("GitHub event converted to commands successfully")
8175

8276
err = digger.RunCommandsPerProject(commandsToRunPerProject, repoOwner, repositoryName, eventName, prNumber, diggerConfig, githubPrService, lock, "")
8377
if err != nil {
84-
fmt.Printf("failed to execute command, %v", err)
85-
os.Exit(8)
78+
reportErrorAndExit(repoOwner, fmt.Sprintf("Failed to run commands. %s", err), 8)
8679
}
8780
println("Commands executed successfully")
81+
82+
reportErrorAndExit(repoOwner, "Digger finished successfully", 0)
83+
84+
defer func() {
85+
if r := recover(); r != nil {
86+
reportErrorAndExit(repoOwner, fmt.Sprintf("Panic occurred. %s", r), 1)
87+
}
88+
}()
89+
90+
}
91+
92+
func reportErrorAndExit(repoOwner string, message string, exitCode int) {
93+
fmt.Printf(message)
94+
err := utils.SendLogRecord(repoOwner, message)
95+
if err != nil {
96+
fmt.Printf("Failed to send log record. %s\n", err)
97+
}
98+
os.Exit(exitCode)
8899
}

pkg/utils/usage.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,25 @@ func SendUsageRecord(repoOwner string, eventName string, action string) error {
2727
Action: action,
2828
Token: "diggerABC@@1998fE",
2929
}
30+
return sendPayload(payload)
31+
}
32+
33+
func SendLogRecord(repoOwner string, message string) error {
34+
h := sha256.New()
35+
h.Write([]byte(repoOwner))
36+
sha := h.Sum(nil)
37+
shaStr := hex.EncodeToString(sha)
38+
payload := UsageRecord{
39+
UserId: shaStr,
40+
EventName: "log",
41+
Action: message,
42+
Token: "diggerABC@@1998fE",
43+
}
44+
return sendPayload(payload)
45+
}
46+
47+
func sendPayload(payload interface{}) error {
48+
3049
jsonData, err := json.Marshal(payload)
3150
if err != nil {
3251
log.Printf("Error marshalling usage record: %v", err)

0 commit comments

Comments
 (0)