Skip to content

Commit 565a65c

Browse files
authored
Configure Base URL for Github Client (#52)
* add enterprise functionality * upgrade github client version * update how we add to path * test finding * add finding that should be caught * rm test finding file, was correctly detected * rm unnecessary check * fix nits
1 parent 30c9358 commit 565a65c

File tree

15 files changed

+38
-23
lines changed

15 files changed

+38
-23
lines changed

.github/workflows/nightfalldlp.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
steps:
1212
- name: Add $GOPATH/bin
1313
run: |
14-
echo ::add-path::$(go env GOPATH)/bin
14+
echo $(go env GOPATH)/bin >> $GITHUB_PATH
1515
1616
- name: Download repo
1717
uses: actions/checkout@v2

cmd/nightfalldlp/main.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const (
1717
nightfallConfigFileName = ".nightfalldlp/config.json"
1818
githubActionsEnvVar = "GITHUB_ACTIONS"
1919
githubTokenEnvVar = "GITHUB_TOKEN"
20+
githubApiBaseUrlEnvVar = "GITHUB_API_BASE_URL"
2021
circleCiEnvVar = "CIRCLECI"
2122
)
2223

@@ -81,21 +82,22 @@ func usingCircleCi() bool {
8182
// CreateDiffReviewerClient determines the current environment that is running nightfalldlp
8283
// and returns the corresponding DiffReviewer client
8384
func CreateDiffReviewerClient() (diffreviewer.DiffReviewer, error) {
85+
baseUrl, _ := os.LookupEnv(githubApiBaseUrlEnvVar)
8486
switch {
8587
case usingGithubAction():
8688
githubToken, ok := os.LookupEnv(githubTokenEnvVar)
8789
if !ok {
8890
return nil, fmt.Errorf("could not find required %s environment variable", githubTokenEnvVar)
8991
}
90-
return github.NewAuthenticatedGithubService(githubToken), nil
92+
return github.NewAuthenticatedGithubService(githubToken, baseUrl), nil
9193
case usingCircleCi():
9294
githubToken, ok := os.LookupEnv(githubTokenEnvVar)
9395
if !ok || githubToken == "" {
9496
circleService := circleci.NewCircleCiService()
9597
circleService.GetLogger().Info("Github Token not found - findings will only be posted to CircleCI UI")
9698
return circleService, nil
9799
}
98-
return circleci.NewCircleCiServiceWithGithubComments(githubToken), nil
100+
return circleci.NewCircleCiServiceWithGithubComments(githubToken, baseUrl), nil
99101
default:
100102
return nil, errors.New("current environment unknown")
101103
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ require (
66
github.com/gobwas/glob v0.2.3
77
github.com/golang/mock v1.4.3
88
github.com/google/go-cmp v0.5.1 // indirect
9-
github.com/google/go-github/v31 v31.0.0
9+
github.com/google/go-github/v33 v33.0.0
1010
github.com/google/uuid v1.1.2
1111
github.com/nightfallai/nightfall_go_client v1.0.3
1212
github.com/pkg/errors v0.9.1 // indirect

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs
1111
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
1212
github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k=
1313
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
14-
github.com/google/go-github/v31 v31.0.0 h1:JJUxlP9lFK+ziXKimTCprajMApV1ecWD4NB6CCb0plo=
15-
github.com/google/go-github/v31 v31.0.0/go.mod h1:NQPZol8/1sMoWYGN2yaALIBytu17gAWfhbweiEed3pM=
14+
github.com/google/go-github/v33 v33.0.0 h1:qAf9yP0qc54ufQxzwv+u9H0tiVOnPJxo0lI/JXqw3ZM=
15+
github.com/google/go-github/v33 v33.0.0/go.mod h1:GMdDnVZY/2TsWgp/lkYnpSAh6TrzhANBBwm6k6TTEXg=
1616
github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
1717
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
1818
github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=

internal/clients/diffreviewer/circleci/circleci_service.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"strconv"
99
"strings"
1010

11-
"github.com/google/go-github/v31/github"
11+
"github.com/google/go-github/v33/github"
1212
"github.com/nightfallai/nightfall_code_scanner/internal/clients/diffreviewer"
1313
"github.com/nightfallai/nightfall_code_scanner/internal/clients/diffreviewer/diffutils"
1414
gc "github.com/nightfallai/nightfall_code_scanner/internal/clients/diffreviewer/github"
@@ -63,9 +63,9 @@ func NewCircleCiService() diffreviewer.DiffReviewer {
6363
}
6464

6565
// NewCircleCiServiceWithGithubComments creates a new CircleCi service with an authenticated Github client
66-
func NewCircleCiServiceWithGithubComments(token string) diffreviewer.DiffReviewer {
66+
func NewCircleCiServiceWithGithubComments(token, baseUrl string) diffreviewer.DiffReviewer {
6767
return &Service{
68-
GithubClient: gc.NewAuthenticatedClient(token),
68+
GithubClient: gc.NewAuthenticatedClient(token, baseUrl),
6969
Logger: circlelogger.NewDefaultCircleLogger(),
7070
}
7171
}

internal/clients/diffreviewer/circleci/circleci_service_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"testing"
1010

1111
"github.com/golang/mock/gomock"
12-
"github.com/google/go-github/v31/github"
12+
"github.com/google/go-github/v33/github"
1313
"github.com/nightfallai/nightfall_code_scanner/internal/clients/diffreviewer"
1414
circlelogger "github.com/nightfallai/nightfall_code_scanner/internal/clients/logger/circle_logger"
1515
"github.com/nightfallai/nightfall_code_scanner/internal/mocks/clients/gitdiff_mock"

internal/clients/diffreviewer/github/github_client.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package github
22

33
import (
44
"context"
5+
"net/url"
6+
"strings"
57

6-
"github.com/google/go-github/v31/github"
8+
"github.com/google/go-github/v33/github"
79
"github.com/nightfallai/nightfall_code_scanner/internal/interfaces/githubintf"
810
"golang.org/x/oauth2"
911
)
@@ -14,13 +16,24 @@ type Client struct {
1416
}
1517

1618
// NewAuthenticatedClient generates an authenticated github client
17-
func NewAuthenticatedClient(token string) *Client {
19+
func NewAuthenticatedClient(token string, baseUrl string) *Client {
1820
ctx := context.Background()
1921
ts := oauth2.StaticTokenSource(
2022
&oauth2.Token{AccessToken: token},
2123
)
2224
tc := oauth2.NewClient(ctx, ts)
2325
githubClient := github.NewClient(tc)
26+
// for enterprise
27+
if baseUrl != "" {
28+
u, _ := url.Parse(baseUrl)
29+
if !strings.HasSuffix(u.Path, "/") {
30+
u.Path += "/"
31+
}
32+
if !strings.HasSuffix(u.Path, "/api/v3/") {
33+
u.Path += "api/v3/"
34+
}
35+
githubClient.BaseURL = u
36+
}
2437
return &Client{githubClient}
2538
}
2639

internal/clients/diffreviewer/github/github_service.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"os"
1010
"strings"
1111

12-
"github.com/google/go-github/v31/github"
12+
"github.com/google/go-github/v33/github"
1313
"github.com/nightfallai/nightfall_code_scanner/internal/clients/diffreviewer"
1414
"github.com/nightfallai/nightfall_code_scanner/internal/clients/diffreviewer/diffutils"
1515
"github.com/nightfallai/nightfall_code_scanner/internal/clients/gitdiff"
@@ -128,9 +128,9 @@ type Service struct {
128128
}
129129

130130
// NewAuthenticatedGithubService creates a new authenticated github service with the github token
131-
func NewAuthenticatedGithubService(githubToken string) diffreviewer.DiffReviewer {
131+
func NewAuthenticatedGithubService(githubToken, baseURL string) diffreviewer.DiffReviewer {
132132
return &Service{
133-
Client: NewAuthenticatedClient(githubToken),
133+
Client: NewAuthenticatedClient(githubToken, baseURL),
134134
Logger: githublogger.NewDefaultGithubLogger(),
135135
}
136136
}
@@ -280,7 +280,7 @@ func (s *Service) WriteComments(comments []*diffreviewer.Comment) error {
280280
Summary: github.String(summaryNumFindings),
281281
Annotations: remainingAnnotations,
282282
Images: []*github.CheckRunImage{
283-
&github.CheckRunImage{
283+
{
284284
Alt: github.String(imageAlt),
285285
ImageURL: github.String(imageURL),
286286
},

internal/clients/diffreviewer/github/github_service_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
"testing"
1111

1212
"github.com/golang/mock/gomock"
13-
"github.com/google/go-github/v31/github"
13+
"github.com/google/go-github/v33/github"
1414
"github.com/nightfallai/nightfall_code_scanner/internal/clients/diffreviewer"
1515
githubservice "github.com/nightfallai/nightfall_code_scanner/internal/clients/diffreviewer/github"
1616
githublogger "github.com/nightfallai/nightfall_code_scanner/internal/clients/logger/github_logger"

internal/interfaces/githubintf/github_checks.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package githubintf
33
import (
44
"context"
55

6-
"github.com/google/go-github/v31/github"
6+
"github.com/google/go-github/v33/github"
77
)
88

99
//go:generate go run github.com/golang/mock/mockgen -destination=../../mocks/clients/githubchecks_mock/githubchecks_mock.go -source=../githubintf/github_checks.go -package=githubchecks_mock -mock_names=GithubChecks=GithubChecks

0 commit comments

Comments
 (0)