Skip to content
This repository was archived by the owner on Jun 2, 2023. It is now read-only.

Commit af288f9

Browse files
committed
override git setting to fetch private github dependencies
1 parent 7cf902b commit af288f9

File tree

6 files changed

+37
-6
lines changed

6 files changed

+37
-6
lines changed

deployments/build_runner/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ RUN curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.s
2525

2626
WORKDIR ${GOPATH}/src/github.com/golangci/golangci-api
2727
RUN git clone https://github.com/golangci/golangci-api.git . && \
28-
git checkout 6ca91c7c462a4441397c61e5cb71949d69622e3f && \
28+
git checkout afe3f1fb25f93da45777fd12b042e9671e905bee && \
2929
GO111MODULE=on go mod vendor && \
3030
go install ./cmd/buildrunner && \
3131
go install ./cmd/goenvbuild

pkg/goenvbuild/preparer.go

+24
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,17 @@ func (p Preparer) run(needStreamToOutput bool) *result.Result {
155155
return saveErr(err)
156156
}
157157

158+
// setup git
159+
privateAccessToken := p.cfg.GetString("PRIVATE_ACCESS_TOKEN")
160+
if privateAccessToken != "" {
161+
err = runStepGroup(res.Log, "setup git", func(sg *result.StepGroup, log logutil.Log) error {
162+
return p.setupGit(ctx, sg, log, runner, privateAccessToken)
163+
})
164+
if err != nil {
165+
return saveErr(err)
166+
}
167+
}
168+
158169
// prepare repo
159170
err = runStepGroup(res.Log, "prepare repo", func(sg *result.StepGroup, log logutil.Log) error {
160171
return p.runPreparation(ctx, sg, log, &res.ServiceConfig, projectPath, runner)
@@ -376,6 +387,19 @@ func (p Preparer) parseGolangciLintVersion(sg *result.StepGroup, log logutil.Log
376387
return v, nil
377388
}
378389

390+
func (p Preparer) setupGit(ctx context.Context, sg *result.StepGroup, log logutil.Log,
391+
runner *command.StreamingRunner, privateAccessToken string) error {
392+
393+
sg.AddStep("setup git overrides for GitHub private dependencies")
394+
overridePattern := fmt.Sprintf(`url.https://%[email protected]/.insteadOf`, privateAccessToken)
395+
_, err := runner.Run(ctx, "git", "config", "--global", overridePattern, "https://github.com/")
396+
if err != nil {
397+
return errors.Wrap(err, "failed to setup git overrides")
398+
}
399+
400+
return nil
401+
}
402+
379403
func (p Preparer) runPreparation(ctx context.Context, sg *result.StepGroup, log logutil.Log,
380404
cfg *goenvconfig.Service, projectPath string, runner *command.StreamingRunner) error {
381405

pkg/worker/analyze/processors/github_go_pr.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,8 @@ func (g githubGoPR) Process(ctx context.Context) error {
336336
g.setCommitStatus(ctx, github.StatusPending, "GolangCI is reviewing your Pull Request...")
337337

338338
startedAt := time.Now()
339-
exec, resLog, err := g.workspaceInstaller.Setup(ctx, g.getRepo(), "github.com", g.context.Repo.Owner, g.context.Repo.Name) //nolint:govet
339+
exec, resLog, err := g.workspaceInstaller.Setup(ctx, g.context.GithubAccessToken,
340+
g.getRepo(), "github.com", g.context.Repo.Owner, g.context.Repo.Name) //nolint:govet
340341
if err != nil {
341342
analytics.Log(ctx).Warnf("Failed to setup workspace: %s", err)
342343
publicError := fmt.Sprintf("failed to setup workspace: %s", err)

pkg/worker/analyze/processors/repo_processor.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ func (r *Repo) prepare(ctx *RepoContext, res *repoResult) error {
120120
defer res.addTimingFrom("Prepare", time.Now())
121121

122122
fr := buildFetchersRepo(ctx)
123-
exec, resLog, err := r.Wi.Setup(ctx.Ctx, fr, "github.com", ctx.Repo.Owner, ctx.Repo.Name)
123+
exec, resLog, err := r.Wi.Setup(ctx.Ctx, ctx.PrivateAccessToken, fr, "github.com", ctx.Repo.Owner, ctx.Repo.Name)
124124
if err != nil {
125125
return errors.Wrap(err, "failed to setup workspace")
126126
}

pkg/worker/lib/goutils/workspaces/go.go

+8-2
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,18 @@ func NewGo(exec executors.Executor, log logutil.Log, repoFetcher fetchers.Fetche
2929
}
3030
}
3131

32-
func (w *Go) Setup(ctx context.Context, repo *fetchers.Repo, projectPathParts ...string) (executors.Executor, *result.Log, error) {
32+
func (w *Go) Setup(ctx context.Context, privateAccessToken string, repo *fetchers.Repo, projectPathParts ...string) (executors.Executor, *result.Log, error) {
3333
if err := w.repoFetcher.Fetch(ctx, repo, w.exec); err != nil {
3434
return nil, nil, errors.Wrap(err, "failed to fetch repo")
3535
}
3636

37-
exec := w.exec.WithEnv("REPO", path.Join(projectPathParts...)).WithEnv("FORMAT_JSON", "1")
37+
exec := w.exec.
38+
WithEnv("REPO", path.Join(projectPathParts...)).
39+
WithEnv("FORMAT_JSON", "1")
40+
if privateAccessToken != "" {
41+
exec = exec.WithEnv("PRIVATE_ACCESS_TOKEN", privateAccessToken)
42+
}
43+
3844
out, err := exec.Run(ctx, "goenvbuild")
3945
if err != nil {
4046
return nil, nil, errors.Wrap(err, "goenvbuild failed")

pkg/worker/lib/goutils/workspaces/workspace.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ import (
99
)
1010

1111
type Installer interface {
12-
Setup(ctx context.Context, repo *fetchers.Repo, projectPathParts ...string) (executors.Executor, *result.Log, error)
12+
Setup(ctx context.Context, privateAccessToken string, repo *fetchers.Repo, projectPathParts ...string) (executors.Executor, *result.Log, error)
1313
}

0 commit comments

Comments
 (0)