Skip to content

Commit 647eb71

Browse files
committed
fix lints
1 parent b69156e commit 647eb71

File tree

5 files changed

+51
-61
lines changed

5 files changed

+51
-61
lines changed

internal/server/exporter.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"bytes"
55
"context"
66
"crypto/hmac"
7-
"crypto/sha1"
7+
"crypto/sha1" // nolint: gosec
88
"encoding/hex"
99
"errors"
1010
"fmt"
@@ -82,7 +82,7 @@ var (
8282
)
8383

8484
func init() {
85-
//Register metrics with prometheus
85+
// Register metrics with prometheus
8686
prometheus.MustRegister(workflowJobHistogramVec)
8787
prometheus.MustRegister(histogramVec)
8888
prometheus.MustRegister(totalMinutesUsedActions)
@@ -97,11 +97,11 @@ func init() {
9797
type GHActionExporter struct {
9898
GHClient *github.Client
9999
Logger log.Logger
100-
Opts ServerOpts
100+
Opts Opts
101101
JobObserver WorkflowJobObserver
102102
}
103103

104-
func NewGHActionExporter(logger log.Logger, opts ServerOpts) *GHActionExporter {
104+
func NewGHActionExporter(logger log.Logger, opts Opts) *GHActionExporter {
105105
ctx := context.Background()
106106
ts := oauth2.StaticTokenSource(
107107
&oauth2.Token{AccessToken: opts.GitHubAPIToken},
@@ -122,13 +122,13 @@ func (c *GHActionExporter) CollectActionBilling() {
122122
if c.Opts.GitHubOrg != "" {
123123
actionsBilling, _, err := c.GHClient.Billing.GetActionsBillingOrg(context.TODO(), c.Opts.GitHubOrg)
124124
if err != nil {
125-
c.Logger.Log("msg", "failed to retrive the actions billing for an org", "org", c.Opts.GitHubOrg, "err", err)
125+
_ = c.Logger.Log("msg", "failed to retrieve the actions billing for an org", "org", c.Opts.GitHubOrg, "err", err)
126126
return
127127
}
128128

129129
totalMinutesUsedActions.WithLabelValues(c.Opts.GitHubOrg, "").Set(float64(actionsBilling.TotalMinutesUsed))
130130
includedMinutesUsedActions.WithLabelValues(c.Opts.GitHubOrg, "").Set(float64(actionsBilling.IncludedMinutes))
131-
totalPaidMinutesActions.WithLabelValues(c.Opts.GitHubOrg, "").Set(float64(actionsBilling.TotalPaidMinutesUsed))
131+
totalPaidMinutesActions.WithLabelValues(c.Opts.GitHubOrg, "").Set(actionsBilling.TotalPaidMinutesUsed)
132132
totalMinutesUsedUbuntuActions.WithLabelValues(c.Opts.GitHubOrg, "").Set(float64(actionsBilling.MinutesUsedBreakdown.Ubuntu))
133133
totalMinutesUsedMacOSActions.WithLabelValues(c.Opts.GitHubOrg, "").Set(float64(actionsBilling.MinutesUsedBreakdown.MacOS))
134134
totalMinutesUsedWindowsActions.WithLabelValues(c.Opts.GitHubOrg, "").Set(float64(actionsBilling.MinutesUsedBreakdown.Windows))
@@ -137,13 +137,13 @@ func (c *GHActionExporter) CollectActionBilling() {
137137
if c.Opts.GitHubUser != "" {
138138
actionsBilling, _, err := c.GHClient.Billing.GetActionsBillingUser(context.TODO(), c.Opts.GitHubUser)
139139
if err != nil {
140-
c.Logger.Log("msg", "failed to retrive the actions billing for an user", "user", c.Opts.GitHubUser, "err", err)
140+
_ = c.Logger.Log("msg", "failed to retrieve the actions billing for an user", "user", c.Opts.GitHubUser, "err", err)
141141
return
142142
}
143143

144144
totalMinutesUsedActions.WithLabelValues("", c.Opts.GitHubUser).Set(float64(actionsBilling.TotalMinutesUsed))
145145
includedMinutesUsedActions.WithLabelValues("", c.Opts.GitHubUser).Set(float64(actionsBilling.IncludedMinutes))
146-
totalPaidMinutesActions.WithLabelValues("", c.Opts.GitHubUser).Set(float64(actionsBilling.TotalPaidMinutesUsed))
146+
totalPaidMinutesActions.WithLabelValues("", c.Opts.GitHubUser).Set(actionsBilling.TotalPaidMinutesUsed)
147147
totalMinutesUsedUbuntuActions.WithLabelValues("", c.Opts.GitHubUser).Set(float64(actionsBilling.MinutesUsedBreakdown.Ubuntu))
148148
totalMinutesUsedMacOSActions.WithLabelValues("", c.Opts.GitHubUser).Set(float64(actionsBilling.MinutesUsedBreakdown.MacOS))
149149
totalMinutesUsedWindowsActions.WithLabelValues("", c.Opts.GitHubUser).Set(float64(actionsBilling.MinutesUsedBreakdown.Windows))
@@ -156,14 +156,14 @@ func (c *GHActionExporter) HandleGHWebHook(w http.ResponseWriter, r *http.Reques
156156

157157
receivedHash := strings.SplitN(r.Header.Get("X-Hub-Signature"), "=", 2)
158158
if receivedHash[0] != "sha1" {
159-
level.Error(c.Logger).Log("msg", "invalid webhook hash signature: SHA1")
159+
_ = level.Error(c.Logger).Log("msg", "invalid webhook hash signature: SHA1")
160160
w.WriteHeader(http.StatusForbidden)
161161
return
162162
}
163163

164164
err := validateSignature(c.Opts.GitHubToken, receivedHash, buf)
165165
if err != nil {
166-
level.Error(c.Logger).Log("msg", "invalid token", "err", err)
166+
_ = level.Error(c.Logger).Log("msg", "invalid token", "err", err)
167167
w.WriteHeader(http.StatusForbidden)
168168
return
169169
}
@@ -173,23 +173,23 @@ func (c *GHActionExporter) HandleGHWebHook(w http.ResponseWriter, r *http.Reques
173173
case "ping":
174174
pingEvent := model.PingEventFromJSON(ioutil.NopCloser(bytes.NewBuffer(buf)))
175175
if pingEvent == nil {
176-
level.Info(c.Logger).Log("msg", "ping event", "hookID", pingEvent.GetHookID())
176+
_ = level.Info(c.Logger).Log("msg", "ping event", "hookID", pingEvent.GetHookID())
177177
w.WriteHeader(http.StatusBadRequest)
178178
return
179179
}
180180
w.WriteHeader(http.StatusAccepted)
181-
w.Write([]byte(`{"status": "honk"}`))
181+
_, _ = w.Write([]byte(`{"status": "honk"}`))
182182
return
183183
case "check_run":
184184
event := model.CheckRunEventFromJSON(ioutil.NopCloser(bytes.NewBuffer(buf)))
185-
level.Info(c.Logger).Log("msg", "got check_run event", "org", event.GetRepo().GetOwner().GetLogin(), "repo", event.GetRepo().GetName(), "workflowName", event.GetCheckRun().GetName())
185+
_ = level.Info(c.Logger).Log("msg", "got check_run event", "org", event.GetRepo().GetOwner().GetLogin(), "repo", event.GetRepo().GetName(), "workflowName", event.GetCheckRun().GetName())
186186
go c.CollectWorkflowRun(event)
187187
case "workflow_job":
188188
event := model.WorkflowJobEventFromJSON(ioutil.NopCloser(bytes.NewBuffer(buf)))
189-
level.Info(c.Logger).Log("msg", "got workflow_job event", "org", event.GetRepo().GetOwner().GetLogin(), "repo", event.GetRepo().GetName(), "runId", event.GetWorkflowJob().GetRunID())
189+
_ = level.Info(c.Logger).Log("msg", "got workflow_job event", "org", event.GetRepo().GetOwner().GetLogin(), "repo", event.GetRepo().GetName(), "runId", event.GetWorkflowJob().GetRunID())
190190
go c.CollectWorkflowJobEvent(event)
191191
default:
192-
level.Info(c.Logger).Log("msg", "not implemented")
192+
_ = level.Info(c.Logger).Log("msg", "not implemented")
193193
w.WriteHeader(http.StatusNotImplemented)
194194
return
195195
}

internal/server/exporter_test.go

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,10 @@ const (
2525
)
2626

2727
func Test_GHActionExporter_HandleGHWebHook_RejectsInvalidSignature(t *testing.T) {
28-
2928
// Given
3029
subject := server.GHActionExporter{
3130
Logger: log.NewLogfmtLogger(log.NewSyncWriter(os.Stderr)),
32-
Opts: server.ServerOpts{
31+
Opts: server.Opts{
3332
GitHubToken: webhookSecret,
3433
},
3534
}
@@ -47,12 +46,11 @@ func Test_GHActionExporter_HandleGHWebHook_RejectsInvalidSignature(t *testing.T)
4746
}
4847

4948
func Test_GHActionExporter_HandleGHWebHook_ValidatesValidSignature(t *testing.T) {
50-
5149
// Given
5250
observer := NewTestJobObserver(t)
5351
subject := server.GHActionExporter{
5452
Logger: log.NewLogfmtLogger(log.NewSyncWriter(os.Stdout)),
55-
Opts: server.ServerOpts{
53+
Opts: server.Opts{
5654
GitHubToken: webhookSecret,
5755
},
5856
JobObserver: observer,
@@ -71,11 +69,10 @@ func Test_GHActionExporter_HandleGHWebHook_ValidatesValidSignature(t *testing.T)
7169
}
7270

7371
func Test_GHActionExporter_HandleGHWebHook_Ping(t *testing.T) {
74-
7572
// Given
7673
subject := server.GHActionExporter{
7774
Logger: log.NewLogfmtLogger(log.NewSyncWriter(os.Stdout)),
78-
Opts: server.ServerOpts{
75+
Opts: server.Opts{
7976
GitHubToken: webhookSecret,
8077
},
8178
}
@@ -91,11 +88,10 @@ func Test_GHActionExporter_HandleGHWebHook_Ping(t *testing.T) {
9188
}
9289

9390
func Test_GHActionExporter_HandleGHWebHook_CheckRun(t *testing.T) {
94-
9591
// Given
9692
subject := server.GHActionExporter{
9793
Logger: log.NewLogfmtLogger(log.NewSyncWriter(os.Stdout)),
98-
Opts: server.ServerOpts{
94+
Opts: server.Opts{
9995
GitHubToken: webhookSecret,
10096
},
10197
}
@@ -110,12 +106,11 @@ func Test_GHActionExporter_HandleGHWebHook_CheckRun(t *testing.T) {
110106
}
111107

112108
func Test_GHActionExporter_HandleGHWebHook_WorkflowJobQueuedEvent(t *testing.T) {
113-
114109
// Given
115-
observer := &testJobObserver{}
110+
observer := &TestJobObserver{}
116111
subject := server.GHActionExporter{
117112
Logger: log.NewLogfmtLogger(log.NewSyncWriter(os.Stdout)),
118-
Opts: server.ServerOpts{
113+
Opts: server.Opts{
119114
GitHubToken: webhookSecret,
120115
},
121116
JobObserver: observer,
@@ -141,12 +136,11 @@ func Test_GHActionExporter_HandleGHWebHook_WorkflowJobQueuedEvent(t *testing.T)
141136
}
142137

143138
func Test_GHActionExporter_HandleGHWebHook_WorkflowJobInProgressEvent(t *testing.T) {
144-
145139
// Given
146140
observer := NewTestJobObserver(t)
147141
subject := server.GHActionExporter{
148142
Logger: log.NewLogfmtLogger(log.NewSyncWriter(os.Stdout)),
149-
Opts: server.ServerOpts{
143+
Opts: server.Opts{
150144
GitHubToken: webhookSecret,
151145
},
152146
JobObserver: observer,
@@ -198,12 +192,11 @@ func Test_GHActionExporter_HandleGHWebHook_WorkflowJobInProgressEvent(t *testing
198192
}
199193

200194
func Test_GHActionExporter_HandleGHWebHook_WorkflowJobInProgressEventWithNegativeDuration(t *testing.T) {
201-
202195
// Given
203196
observer := NewTestJobObserver(t)
204197
subject := server.GHActionExporter{
205198
Logger: log.NewLogfmtLogger(log.NewSyncWriter(os.Stdout)),
206-
Opts: server.ServerOpts{
199+
Opts: server.Opts{
207200
GitHubToken: webhookSecret,
208201
},
209202
JobObserver: observer,
@@ -255,12 +248,11 @@ func Test_GHActionExporter_HandleGHWebHook_WorkflowJobInProgressEventWithNegativ
255248
}
256249

257250
func Test_GHActionExporter_HandleGHWebHook_WorkflowJobCompletedEvent(t *testing.T) {
258-
259251
// Given
260252
observer := NewTestJobObserver(t)
261253
subject := server.GHActionExporter{
262254
Logger: log.NewLogfmtLogger(log.NewSyncWriter(os.Stdout)),
263-
Opts: server.ServerOpts{
255+
Opts: server.Opts{
264256
GitHubToken: webhookSecret,
265257
},
266258
JobObserver: observer,
@@ -317,12 +309,11 @@ func Test_GHActionExporter_HandleGHWebHook_WorkflowJobCompletedEvent(t *testing.
317309
}
318310

319311
func Test_GHActionExporter_HandleGHWebHook_WorkflowJobCompletedEventWithSkippedConclusion(t *testing.T) {
320-
321312
// Given
322313
observer := NewTestJobObserver(t)
323314
subject := server.GHActionExporter{
324315
Logger: log.NewLogfmtLogger(log.NewSyncWriter(os.Stdout)),
325-
Opts: server.ServerOpts{
316+
Opts: server.Opts{
326317
GitHubToken: webhookSecret,
327318
},
328319
JobObserver: observer,
@@ -382,21 +373,21 @@ type jobObservation struct {
382373
seconds float64
383374
}
384375

385-
var _ server.WorkflowJobObserver = (*testJobObserver)(nil)
376+
var _ server.WorkflowJobObserver = (*TestJobObserver)(nil)
386377

387-
type testJobObserver struct {
378+
type TestJobObserver struct {
388379
t *testing.T
389380
observed chan jobObservation
390381
}
391382

392-
func NewTestJobObserver(t *testing.T) *testJobObserver {
393-
return &testJobObserver{
383+
func NewTestJobObserver(t *testing.T) *TestJobObserver {
384+
return &TestJobObserver{
394385
t: t,
395386
observed: make(chan jobObservation, 1),
396387
}
397388
}
398389

399-
func (o *testJobObserver) ObserveWorkflowJobDuration(org, repo, state, runnerGroup string, seconds float64) {
390+
func (o *TestJobObserver) ObserveWorkflowJobDuration(org, repo, state, runnerGroup string, seconds float64) {
400391
o.observed <- jobObservation{
401392
org: org,
402393
repo: repo,
@@ -406,15 +397,15 @@ func (o *testJobObserver) ObserveWorkflowJobDuration(org, repo, state, runnerGro
406397
}
407398
}
408399

409-
func (o *testJobObserver) assertNoObservation(timeout time.Duration) {
400+
func (o *TestJobObserver) assertNoObservation(timeout time.Duration) {
410401
select {
411402
case <-time.After(timeout):
412403
case <-o.observed:
413404
o.t.Fatal("expected no observation but an observation occurred")
414405
}
415406
}
416407

417-
func (o *testJobObserver) assetObservation(expected jobObservation, timeout time.Duration) {
408+
func (o *TestJobObserver) assetObservation(expected jobObservation, timeout time.Duration) {
418409
select {
419410
case <-time.After(timeout):
420411
o.t.Fatal("expected no observation but none occurred")

internal/server/server.go

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
"github.com/prometheus/common/version"
1515
)
1616

17-
type ServerOpts struct {
17+
type Opts struct {
1818
MetricsPath string
1919
ListenAddress string
2020
WebhookPath string
@@ -30,10 +30,10 @@ type Server struct {
3030
logger log.Logger
3131
server *http.Server
3232
exporter *GHActionExporter
33-
opts ServerOpts
33+
opts Opts
3434
}
3535

36-
func NewServer(logger log.Logger, opts ServerOpts) *Server {
36+
func NewServer(logger log.Logger, opts Opts) *Server {
3737
mux := http.NewServeMux()
3838

3939
httpServer := &http.Server{
@@ -56,17 +56,16 @@ func NewServer(logger log.Logger, opts ServerOpts) *Server {
5656
}
5757

5858
func (s *Server) Serve(ctx context.Context) error {
59-
6059
listener, err := getListener(s.opts.ListenAddress, s.logger)
6160
if err != nil {
62-
return fmt.Errorf("get listener: %v", err)
61+
return fmt.Errorf("get listener: %w", err)
6362
}
6463

65-
level.Info(s.logger).Log("msg", "GitHub Actions Prometheus Exporter has successfully started")
64+
_ = level.Info(s.logger).Log("msg", "GitHub Actions Prometheus Exporter has successfully started")
6665
err = s.server.Serve(listener)
6766

6867
if err != nil && !errors.Is(err, http.ErrServerClosed) {
69-
return fmt.Errorf("server closed: %v", err)
68+
return fmt.Errorf("server closed: %w", err)
7069
}
7170
return nil
7271
}
@@ -76,7 +75,7 @@ func (s *Server) Shutdown(ctx context.Context) error {
7675
}
7776

7877
func (s *Server) handleRoot(w http.ResponseWriter, _ *http.Request) {
79-
w.Write([]byte(`<html>
78+
_, _ = w.Write([]byte(`<html>
8079
<head><title>GitHub Actions Exporter</title></head>
8180
<body>
8281
<h1>GitHub Actions Exporter</h1>
@@ -94,7 +93,7 @@ func getListener(listenAddress string, logger log.Logger) (net.Listener, error)
9493
if strings.HasPrefix(listenAddress, "unix:") {
9594
path, _, pathError := parseUnixSocketAddress(listenAddress)
9695
if pathError != nil {
97-
return listener, fmt.Errorf("parsing unix domain socket listen address %s failed: %v", listenAddress, pathError)
96+
return listener, fmt.Errorf("parsing unix domain socket listen address %s failed: %w", listenAddress, pathError)
9897
}
9998
listener, err = net.ListenUnix("unix", &net.UnixAddr{Name: path, Net: "unix"})
10099
} else {
@@ -105,7 +104,7 @@ func getListener(listenAddress string, logger log.Logger) (net.Listener, error)
105104
return listener, err
106105
}
107106

108-
level.Info(logger).Log("msg", fmt.Sprintf("Listening on %s", listenAddress))
107+
_ = level.Info(logger).Log("msg", fmt.Sprintf("Listening on %s", listenAddress))
109108
return listener, nil
110109
}
111110

internal/server/server_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import (
1717

1818
func Test_Server_MetricsRouteWithNoMetrics(t *testing.T) {
1919
logger := log.NewLogfmtLogger(log.NewSyncWriter(os.Stderr))
20-
srv := server.NewServer(logger, server.ServerOpts{
20+
srv := server.NewServer(logger, server.Opts{
2121
MetricsPath: "/metrics",
2222
ListenAddress: ":8000",
2323
WebhookPath: "/webhook",
@@ -52,7 +52,7 @@ func Test_Server_MetricsRouteWithNoMetrics(t *testing.T) {
5252

5353
func Test_Server_MetricsRouteAfterWorkflowJob(t *testing.T) {
5454
logger := log.NewLogfmtLogger(log.NewSyncWriter(os.Stderr))
55-
srv := server.NewServer(logger, server.ServerOpts{
55+
srv := server.NewServer(logger, server.Opts{
5656
MetricsPath: "/metrics",
5757
ListenAddress: ":8000",
5858
WebhookPath: "/webhook",

0 commit comments

Comments
 (0)