Brendan Abolivier 7 lat temu
rodzic
commit
50a388fcbf
Podpisane przez: Brendan Abolivier <contact@brendanabolivier.com> ID klucza GPG: 8EF1500759F70623
1 zmienionych plików z 12 dodań i 0 usunięć
  1. 12
    0
      src/pusher/webhook.go

+ 12
- 0
src/pusher/webhook.go Wyświetl plik

@@ -12,6 +12,8 @@ import (
12 12
 	"gopkg.in/go-playground/webhooks.v3/gitlab"
13 13
 )
14 14
 
15
+// SetupWebhook creates and exposes a GitLab webhook using a given configuration.
16
+// Returns an error if the webhook couldn't be set up.
15 17
 func SetupWebhook(cfg *config.Config) error {
16 18
 	hook := gitlab.New(&gitlab.Config{
17 19
 		Secret: cfg.Webhook.Secret,
@@ -25,27 +27,33 @@ func SetupWebhook(cfg *config.Config) error {
25 27
 	)
26 28
 }
27 29
 
30
+// HandlePush is called each time a push event is sent by GitLab on the webhook.
28 31
 func HandlePush(payload interface{}, header webhooks.Header) {
29 32
 	var err error
30 33
 
34
+	// Process the payload using the right structure
31 35
 	pl := payload.(gitlab.PushEventPayload)
32 36
 
37
+	// Clone or pull the repository
33 38
 	if _, err = git.Sync(cfg.Git); err != nil {
34 39
 		panic(err)
35 40
 	}
36 41
 
42
+	// Iterate over the commits descriptions from the payload
37 43
 	for _, commit := range pl.Commits {
38 44
 		// We don't want to process commits made by the puller
39 45
 		if commit.Author.Email == cfg.Git.CommitsAuthor.Email {
40 46
 			continue
41 47
 		}
42 48
 
49
+		// Push all added files
43 50
 		for _, addedFile := range commit.Added {
44 51
 			if err = pushFile(addedFile); err != nil {
45 52
 				panic(err)
46 53
 			}
47 54
 		}
48 55
 
56
+		// Push all modified files
49 57
 		for _, modifiedFile := range commit.Modified {
50 58
 			if err = pushFile(modifiedFile); err != nil {
51 59
 				panic(err)
@@ -63,6 +71,10 @@ func HandlePush(payload interface{}, header webhooks.Header) {
63 71
 	}
64 72
 }
65 73
 
74
+// pushFile pushes the content of a given file to the Grafana API in order to
75
+// create or update a dashboard.
76
+// Returns an error if there was an issue reading the file or sending its content
77
+// to the Grafana instance.
66 78
 func pushFile(filename string) error {
67 79
 	filePath := cfg.Git.ClonePath + "/" + filename
68 80
 	fileContent, err := ioutil.ReadFile(filePath)