From 353215e40bce3a38d19555d434d03bd7bc5f313c Mon Sep 17 00:00:00 2001 From: Mohamed Habib Date: Thu, 20 Jun 2024 15:55:37 +0100 Subject: [PATCH] fix the error calling cli (#1585) * fix the error calling cli * fix build --- cli/cmd/digger/root.go | 4 ++-- cli/pkg/github/github.go | 5 ++++- cli/pkg/integration/integration_test.go | 8 ++++---- ee/cli/cmd/digger/root.go | 4 ++-- ee/cli/pkg/github/providers.go | 11 ++++++++--- libs/orchestrator/github/github.go | 6 +++--- libs/orchestrator/github/github_test.go | 2 +- libs/spec/providers.go | 2 +- 8 files changed, 25 insertions(+), 17 deletions(-) diff --git a/cli/cmd/digger/root.go b/cli/cmd/digger/root.go index 59110fec9..b7bd9f7f8 100644 --- a/cli/cmd/digger/root.go +++ b/cli/cmd/digger/root.go @@ -36,8 +36,8 @@ func (r *RunConfig) GetServices() (*orchestrator.PullRequestService, *orchestrat switch r.Reporter { case "github": repoOwner, repositoryName := utils.ParseRepoNamespace(r.RepoNamespace) - prService = orchestrator_github.GithubServiceProviderBasic{}.NewService(r.GithubToken, repositoryName, repoOwner) - orgService = orchestrator_github.GithubServiceProviderBasic{}.NewService(r.GithubToken, r.RepoNamespace, r.Actor) + prService, _ = orchestrator_github.GithubServiceProviderBasic{}.NewService(r.GithubToken, repositoryName, repoOwner) + orgService, _ = orchestrator_github.GithubServiceProviderBasic{}.NewService(r.GithubToken, r.RepoNamespace, r.Actor) reporter = &reporting.CiReporter{ CiService: prService, ReportStrategy: ReportStrategy, diff --git a/cli/pkg/github/github.go b/cli/pkg/github/github.go index 99b6243bf..c048f8b24 100644 --- a/cli/pkg/github/github.go +++ b/cli/pkg/github/github.go @@ -80,7 +80,10 @@ func GitHubCI(lock core_locking.Lock, policyChecker core_policy.Checker, backend } repoOwner, repositoryName := utils.ParseRepoNamespace(ghRepository) - githubPrService := githubServiceProvider.NewService(ghToken, repositoryName, repoOwner) + githubPrService, err := githubServiceProvider.NewService(ghToken, repositoryName, repoOwner) + if err != nil { + usage.ReportErrorAndExit(githubActor, fmt.Sprintf("could not create pr service: %v", err), 4) + } currentDir, err := os.Getwd() if err != nil { diff --git a/cli/pkg/integration/integration_test.go b/cli/pkg/integration/integration_test.go index dea71271c..d1d4fd0bc 100644 --- a/cli/pkg/integration/integration_test.go +++ b/cli/pkg/integration/integration_test.go @@ -43,7 +43,7 @@ func getProjectLockForTests() (error, *locking.PullRequestLock) { repoOwner := "diggerhq" repositoryName := "test_dynamodb_lock" ghToken := "token" - githubPrService := dg_github.GithubServiceProviderBasic{}.NewService(ghToken, repositoryName, repoOwner) + githubPrService, _ := dg_github.GithubServiceProviderBasic{}.NewService(ghToken, repositoryName, repoOwner) reporter := reporting.CiReporter{ CiService: &githubPrService, PrNumber: 1, @@ -388,7 +388,7 @@ func TestHappyPath(t *testing.T) { ghEvent := parsedNewPullRequestContext.Event repoOwner := parsedNewPullRequestContext.RepositoryOwner repositoryName := parsedNewPullRequestContext.Repository - githubPrService := dg_github.GithubServiceProviderBasic{}.NewService(ghToken, repositoryName, repoOwner) + githubPrService, _ := dg_github.GithubServiceProviderBasic{}.NewService(ghToken, repositoryName, repoOwner) assert.Equal(t, "pull_request", parsedNewPullRequestContext.EventName) @@ -545,7 +545,7 @@ func TestMultiEnvHappyPath(t *testing.T) { repoOwner := parsedNewPullRequestContext.RepositoryOwner repositoryName := parsedNewPullRequestContext.Repository diggerProjectNamespace := repoOwner + "/" + repositoryName - githubPrService := dg_github.GithubServiceProviderBasic{}.NewService(ghToken, repositoryName, repoOwner) + githubPrService, _ := dg_github.GithubServiceProviderBasic{}.NewService(ghToken, repositoryName, repoOwner) assert.Equal(t, "pull_request", parsedNewPullRequestContext.EventName) @@ -765,7 +765,7 @@ workflows: ghEvent := parsedNewPullRequestContext.Event repoOwner := parsedNewPullRequestContext.RepositoryOwner repositoryName := parsedNewPullRequestContext.Repository - githubPrService := dg_github.GithubServiceProviderBasic{}.NewService(ghToken, repositoryName, repoOwner) + githubPrService, _ := dg_github.GithubServiceProviderBasic{}.NewService(ghToken, repositoryName, repoOwner) diggerProjectNamespace := repoOwner + "/" + repositoryName assert.Equal(t, "pull_request", parsedNewPullRequestContext.EventName) diff --git a/ee/cli/cmd/digger/root.go b/ee/cli/cmd/digger/root.go index 5549e6c7c..047b57f7d 100644 --- a/ee/cli/cmd/digger/root.go +++ b/ee/cli/cmd/digger/root.go @@ -36,8 +36,8 @@ func (r *RunConfig) GetServices() (*orchestrator.PullRequestService, *orchestrat switch r.Reporter { case "github": repoOwner, repositoryName := utils.ParseRepoNamespace(r.RepoNamespace) - prService = orchestrator_github.GithubServiceProviderBasic{}.NewService(r.GithubToken, repositoryName, repoOwner) - orgService = orchestrator_github.GithubServiceProviderBasic{}.NewService(r.GithubToken, r.RepoNamespace, r.Actor) + prService, _ = orchestrator_github.GithubServiceProviderBasic{}.NewService(r.GithubToken, repositoryName, repoOwner) + orgService, _ = orchestrator_github.GithubServiceProviderBasic{}.NewService(r.GithubToken, r.RepoNamespace, r.Actor) reporter = &reporting.CiReporter{ CiService: prService, ReportStrategy: ReportStrategy, diff --git a/ee/cli/pkg/github/providers.go b/ee/cli/pkg/github/providers.go index 985d48e5f..8f5a0eed2 100644 --- a/ee/cli/pkg/github/providers.go +++ b/ee/cli/pkg/github/providers.go @@ -10,23 +10,28 @@ import ( type GithubServiceProviderAdvanced struct{} -func (_ GithubServiceProviderAdvanced) NewService(ghToken string, repoName string, owner string) dg_github.GithubService { +func (_ GithubServiceProviderAdvanced) NewService(ghToken string, repoName string, owner string) (dg_github.GithubService, error) { client := github.NewClient(nil) if ghToken != "" { client = client.WithAuthToken(ghToken) } githubHostname := os.Getenv("DIGGER_GITHUB_HOSTNAME") + var err error if githubHostname != "" { log.Printf("info: using github hostname: %v", githubHostname) githubEnterpriseBaseUrl := fmt.Sprintf("https://%v/api/v3/", githubHostname) githubEnterpriseUploadUrl := fmt.Sprintf("https://%v/api/uploads/", githubHostname) - client.WithEnterpriseURLs(githubEnterpriseBaseUrl, githubEnterpriseUploadUrl) + client, err = client.WithEnterpriseURLs(githubEnterpriseBaseUrl, githubEnterpriseUploadUrl) + if err != nil { + log.Printf("error: could not create enterprise client: %v", err) + return dg_github.GithubService{}, fmt.Errorf("could not create enterprise client: %v", err) + } } return dg_github.GithubService{ Client: client, RepoName: repoName, Owner: owner, - } + }, nil } diff --git a/libs/orchestrator/github/github.go b/libs/orchestrator/github/github.go index a4cc020da..781c43479 100644 --- a/libs/orchestrator/github/github.go +++ b/libs/orchestrator/github/github.go @@ -15,12 +15,12 @@ import ( ) type GithubServiceProvider interface { - NewService(ghToken string, repoName string, owner string) GithubService + NewService(ghToken string, repoName string, owner string) (GithubService, error) } type GithubServiceProviderBasic struct{} -func (_ GithubServiceProviderBasic) NewService(ghToken string, repoName string, owner string) GithubService { +func (_ GithubServiceProviderBasic) NewService(ghToken string, repoName string, owner string) (GithubService, error) { client := github.NewClient(nil) if ghToken != "" { client = client.WithAuthToken(ghToken) @@ -30,7 +30,7 @@ func (_ GithubServiceProviderBasic) NewService(ghToken string, repoName string, Client: client, RepoName: repoName, Owner: owner, - } + }, nil } type GithubService struct { diff --git a/libs/orchestrator/github/github_test.go b/libs/orchestrator/github/github_test.go index db6dcb9a4..216e80d64 100644 --- a/libs/orchestrator/github/github_test.go +++ b/libs/orchestrator/github/github_test.go @@ -115,7 +115,7 @@ func TestFindAllProjectsDependantOnImpactedProjects(t *testing.T) { } func TestFindAllChangedFilesOfPR(t *testing.T) { - githubPrService := GithubServiceProviderBasic{}.NewService("", "digger", "diggerhq") + githubPrService, _ := GithubServiceProviderBasic{}.NewService("", "digger", "diggerhq") files, _ := githubPrService.GetChangedFiles(98) // 45 changed files including 1 renamed file so the previous filename is included assert.Equal(t, 46, len(files)) diff --git a/libs/spec/providers.go b/libs/spec/providers.go index 89a47c0be..c76a200c7 100644 --- a/libs/spec/providers.go +++ b/libs/spec/providers.go @@ -175,7 +175,7 @@ func (v VCSProvider) GetPrService(vcsSpec VcsSpec) (orchestrator.PullRequestServ if token == "" { return nil, fmt.Errorf("failed to get githbu service: GITHUB_TOKEN not specified") } - return github.GithubServiceProviderBasic{}.NewService(token, vcsSpec.RepoName, vcsSpec.RepoOwner), nil + return github.GithubServiceProviderBasic{}.NewService(token, vcsSpec.RepoName, vcsSpec.RepoOwner) default: return nil, fmt.Errorf("could not get PRService, unknown type %v", vcsSpec.VcsType) }