• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mindersec / minder / 14376078638

10 Apr 2025 08:39AM UTC coverage: 56.857%. First build
14376078638

Pull #5515

github

web-flow
Merge ea220ae51 into 0f5ecd80e
Pull Request #5515: Don't return errors when getting properties

27 of 49 new or added lines in 22 files covered. (55.1%)

18305 of 32195 relevant lines covered (56.86%)

37.04 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/internal/providers/gitlab/manager/webhook_handlers_releases.go
1
// SPDX-FileCopyrightText: Copyright 2024 The Minder Authors
2
// SPDX-License-Identifier: Apache-2.0
3

4
package manager
5

6
import (
7
        "fmt"
8
        "net/http"
9

10
        "github.com/ThreeDotsLabs/watermill/message"
11
        "github.com/google/uuid"
12
        "github.com/rs/zerolog"
13
        gitlablib "gitlab.com/gitlab-org/api/client-go"
14

15
        entmsg "github.com/mindersec/minder/internal/entities/handlers/message"
16
        "github.com/mindersec/minder/internal/providers/gitlab"
17
        minderv1 "github.com/mindersec/minder/pkg/api/protobuf/go/minder/v1"
18
        "github.com/mindersec/minder/pkg/entities/properties"
19
        "github.com/mindersec/minder/pkg/eventer/constants"
20
)
21

22
func (m *providerClassManager) handleRelease(l zerolog.Logger, r *http.Request) error {
×
23
        l.Debug().Msg("handling release event")
×
24

×
25
        releaseEvent := gitlablib.ReleaseEvent{}
×
26
        if err := decodeJSONSafe(r.Body, &releaseEvent); err != nil {
×
27
                return fmt.Errorf("error decoding release event: %w", err)
×
28
        }
×
29

30
        releaseID := releaseEvent.ID
×
31
        if releaseID == 0 {
×
32
                return fmt.Errorf("release event missing ID")
×
33
        }
×
34

35
        tag := releaseEvent.Tag
×
36
        if tag == "" {
×
37
                return fmt.Errorf("merge request event missing IID")
×
38
        }
×
39

40
        rawProjectID := releaseEvent.Project.ID
×
41
        if rawProjectID == 0 {
×
42
                return fmt.Errorf("merge request event missing project ID")
×
43
        }
×
44

45
        // TODO: Should we explicitly handle upcoming/historical releases?
46

47
        switch releaseEvent.Action {
×
48
        case "create":
×
49
                return m.publishReleaseMessage(releaseID, tag, rawProjectID,
×
50
                        constants.TopicQueueOriginatingEntityAdd)
×
51
        case "update":
×
52
                return m.publishReleaseMessage(releaseID, tag, rawProjectID,
×
53
                        constants.TopicQueueRefreshEntityAndEvaluate)
×
54
        case "delete":
×
55
                return m.publishReleaseMessage(releaseID, tag, rawProjectID,
×
56
                        constants.TopicQueueOriginatingEntityDelete)
×
57
        default:
×
58
                return nil
×
59
        }
60
}
61

62
func (m *providerClassManager) publishReleaseMessage(
63
        releaseID int, tag string, rawProjectID int, queueTopic string) error {
×
64
        mrUpstreamID := gitlab.FormatPullRequestUpstreamID(releaseID)
×
65
        mrProjectID := gitlab.FormatRepositoryUpstreamID(rawProjectID)
×
66

×
67
        // Form identifying properties
×
NEW
68
        identifyingProps := properties.NewProperties(map[string]any{
×
69
                properties.PropertyUpstreamID: mrUpstreamID,
×
70
                gitlab.ReleasePropertyTag:     tag,
×
71
                gitlab.PullRequestProjectID:   mrProjectID,
×
72
        })
×
73

×
NEW
74
        repoIdentifyingProps := properties.NewProperties(map[string]any{
×
75
                properties.PropertyUpstreamID: mrProjectID,
×
76
        })
×
77

×
78
        // Form message to publish
×
79
        outm := entmsg.NewEntityRefreshAndDoMessage()
×
80
        outm.WithEntity(minderv1.Entity_ENTITY_RELEASE, identifyingProps)
×
81
        outm.WithOriginator(minderv1.Entity_ENTITY_REPOSITORIES, repoIdentifyingProps)
×
82
        outm.WithProviderClassHint(gitlab.Class)
×
83

×
84
        // Convert message for publishing
×
85
        msgID := uuid.New().String()
×
86
        msg := message.NewMessage(msgID, nil)
×
87
        if err := outm.ToMessage(msg); err != nil {
×
88
                return fmt.Errorf("error converting message to protobuf: %w", err)
×
89
        }
×
90

91
        // Publish message
92
        if err := m.pub.Publish(queueTopic, msg); err != nil {
×
93
                return fmt.Errorf("error publishing refresh and eval message: %w", err)
×
94
        }
×
95

96
        return nil
×
97
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc