Skip to content

Commit

Permalink
Merge pull request kubernetes#2413 from saschagrunert/prepare-tool-repo
Browse files Browse the repository at this point in the history
Clone tool repo on krel fast-forward
  • Loading branch information
k8s-ci-robot committed Feb 7, 2022
2 parents c925914 + 50bd5de commit 16a6acc
Show file tree
Hide file tree
Showing 4 changed files with 407 additions and 2 deletions.
35 changes: 33 additions & 2 deletions pkg/fastforward/fastforward.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,9 @@ Please only answer after you have validated the changes.`
// Run starts the FastForward.
func (f *FastForward) Run() (err error) {
if f.options.Submit {
if err := f.prepareToolRepo(); err != nil {
return errors.Wrap(err, "prepare tool repo")
}
logrus.Info("Submitting GCB job")
options := gcb.NewDefaultOptions()
options.FastForward = true
Expand All @@ -82,7 +85,7 @@ func (f *FastForward) Run() (err error) {
return f.Submit(options)
}

repo, err := f.prepareRepo()
repo, err := f.prepareKubernetesRepo()
if err != nil {
return errors.Wrap(err, "prepare repository")
}
Expand Down Expand Up @@ -268,7 +271,7 @@ func (f *FastForward) noFastForwardRequired(repo *git.Repo, branch string) (bool
return tagExists, nil
}

func (f *FastForward) prepareRepo() (*git.Repo, error) {
func (f *FastForward) prepareKubernetesRepo() (*git.Repo, error) {
logrus.Infof("Preparing to fast-forward from %s", f.options.MainRef)

token := f.EnvDefault(github.TokenEnvKey, "")
Expand Down Expand Up @@ -307,3 +310,31 @@ func (f *FastForward) prepareRepo() (*git.Repo, error) {

return repo, nil
}

func (f *FastForward) prepareToolRepo() error {
if f.Exists(".git") {
return nil
}

logrus.Info("Not in a git repo, preparing k/release clone")

tmpPath, err := f.MkdirTemp("", "k-release-")
if err != nil {
return errors.Wrap(err, "create temp directory")
}
if err := f.RemoveAll(tmpPath); err != nil {
return errors.Wrap(err, "remove temp directory")
}
if _, err := f.CloneOrOpenGitHubRepo(
tmpPath,
release.DefaultToolOrg,
release.DefaultToolRepo,
false,
); err != nil {
return errors.Wrap(err, "clone tool repository")
}
if err := f.Chdir(tmpPath); err != nil {
return errors.Wrap(err, "change directory")
}
return nil
}
49 changes: 49 additions & 0 deletions pkg/fastforward/fastforward_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,55 @@ func TestRun(t *testing.T) {
require.Nil(t, err)
},
},
{ // success prepare tool repo
prepare: func(mock *fastforwardfakes.FakeImpl) *Options {
mock.ExistsReturns(false)
return &Options{Submit: true}
},
assert: func(err error) {
require.Nil(t, err)
},
},
{ // failure prepare tool repo on Chdir
prepare: func(mock *fastforwardfakes.FakeImpl) *Options {
mock.ExistsReturns(false)
mock.ChdirReturns(errTest)
return &Options{Submit: true}
},
assert: func(err error) {
require.NotNil(t, err)
},
},
{ // failure prepare tool repo on CloneOrOpenGitHubRepo
prepare: func(mock *fastforwardfakes.FakeImpl) *Options {
mock.ExistsReturns(false)
mock.CloneOrOpenGitHubRepoReturns(nil, errTest)
return &Options{Submit: true}
},
assert: func(err error) {
require.NotNil(t, err)
},
},
{ // failure prepare tool repo on RemoveAll
prepare: func(mock *fastforwardfakes.FakeImpl) *Options {
mock.ExistsReturns(false)
mock.RemoveAllReturns(errTest)
return &Options{Submit: true}
},
assert: func(err error) {
require.NotNil(t, err)
},
},
{ // failure prepare tool repo on mkdirtemp
prepare: func(mock *fastforwardfakes.FakeImpl) *Options {
mock.ExistsReturns(false)
mock.MkdirTempReturns("", errTest)
return &Options{Submit: true}
},
assert: func(err error) {
require.NotNil(t, err)
},
},
{ // success token
prepare: func(mock *fastforwardfakes.FakeImpl) *Options {
mock.IsReleaseBranchReturns(true)
Expand Down
Loading

0 comments on commit 16a6acc

Please sign in to comment.