Skip to content

Commit

Permalink
Fix git-init in case master is not the default branch
Browse files Browse the repository at this point in the history
This fix will patch the `git-init` such that if user doesn't provides revision then instead of taking `master` as the default branch we are doing the `symbolic-link` to the HEAD branch. Also added e2e tests for it.

Signed-off-by: vinamra28 <[email protected]>
  • Loading branch information
vinamra28 committed Jun 24, 2020
1 parent e314f39 commit 87c23e1
Show file tree
Hide file tree
Showing 8 changed files with 193 additions and 42 deletions.
2 changes: 1 addition & 1 deletion docs/resources.md
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ Params that can be added are the following:
is used. [git checkout][git-checkout] is used to switch to the
revision, and will result in a detached HEAD in most cases. Use refspec
along with revision if you want to checkout a particular branch without a
detached HEAD. _If no revision is specified, the resource will default to `master`._
detached HEAD. _If no revision is specified, the resource inspects remote repository to determine the correct default branch._
1. `refspec`: (Optional) specify a git [refspec][git-refspec] to pass to git-fetch.
Note that if this field is specified, it must specify all refs, branches, tags,
or commits required to checkout the specified `revision`. An additional fetch
Expand Down
10 changes: 5 additions & 5 deletions pkg/apis/resource/v1alpha1/git/git_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,7 @@ func NewResource(name, gitImage string, r *resource.PipelineResource) (*Resource
gitResource.NOProxy = param.Value
}
}
// default revision to master if nothing is provided
if gitResource.Revision == "" {
gitResource.Revision = "master"
}

return &gitResource, nil
}

Expand Down Expand Up @@ -149,10 +146,13 @@ func (s *Resource) Replacements() map[string]string {
func (s *Resource) GetInputTaskModifier(_ *v1beta1.TaskSpec, path string) (v1beta1.TaskModifier, error) {
args := []string{
"-url", s.URL,
"-revision", s.Revision,
"-path", path,
}

if s.Revision != "" {
args = append(args, "-revision", s.Revision)
}

if s.Refspec != "" {
args = append(args, "-refspec", s.Refspec)
}
Expand Down
74 changes: 55 additions & 19 deletions pkg/apis/resource/v1alpha1/git/git_resource_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ func TestNewGitResource_Valid(t *testing.T) {
Name: "test-resource",
Type: resourcev1alpha1.PipelineResourceTypeGit,
URL: "[email protected]:test/test.git",
Revision: "master",
Revision: "",
Refspec: "",
GitImage: "override-with-git:latest",
Submodules: true,
Expand All @@ -96,7 +96,7 @@ func TestNewGitResource_Valid(t *testing.T) {
Name: "test-resource",
Type: resourcev1alpha1.PipelineResourceTypeGit,
URL: "[email protected]:test/test.git",
Revision: "master",
Revision: "",
Refspec: "refs/changes/22/222134",
GitImage: "override-with-git:latest",
Submodules: true,
Expand All @@ -117,7 +117,7 @@ func TestNewGitResource_Valid(t *testing.T) {
Name: "test-resource",
Type: resourcev1alpha1.PipelineResourceTypeGit,
URL: "[email protected]:test/test.git",
Revision: "master",
Revision: "",
Refspec: "",
GitImage: "override-with-git:latest",
Submodules: true,
Expand Down Expand Up @@ -394,10 +394,10 @@ func TestGitResource_GetDownloadTaskModifier(t *testing.T) {
Args: []string{
"-url",
"[email protected]:test/test.git",
"-revision",
"master",
"-path",
"/test/test",
"-revision",
"master",
},
WorkingDir: "/workspace",
Env: []corev1.EnvVar{
Expand Down Expand Up @@ -431,10 +431,10 @@ func TestGitResource_GetDownloadTaskModifier(t *testing.T) {
Args: []string{
"-url",
"[email protected]:test/test.git",
"-revision",
"master",
"-path",
"/test/test",
"-revision",
"master",
"-submodules=false",
},
WorkingDir: "/workspace",
Expand Down Expand Up @@ -469,10 +469,10 @@ func TestGitResource_GetDownloadTaskModifier(t *testing.T) {
Args: []string{
"-url",
"[email protected]:test/test.git",
"-revision",
"master",
"-path",
"/test/test",
"-revision",
"master",
"-depth",
"8",
},
Expand Down Expand Up @@ -508,10 +508,10 @@ func TestGitResource_GetDownloadTaskModifier(t *testing.T) {
Args: []string{
"-url",
"[email protected]:test/test.git",
"-revision",
"master",
"-path",
"/test/test",
"-revision",
"master",
"-submodules=false",
"-sslVerify=false",
},
Expand Down Expand Up @@ -546,10 +546,10 @@ func TestGitResource_GetDownloadTaskModifier(t *testing.T) {
Args: []string{
"-url",
"[email protected]:test/test.git",
"-revision",
"master",
"-path",
"/test/test",
"-revision",
"master",
"-submodules=false",
"-sslVerify=false",
},
Expand Down Expand Up @@ -583,10 +583,10 @@ func TestGitResource_GetDownloadTaskModifier(t *testing.T) {
Args: []string{
"-url",
"[email protected]:test/test.git",
"-revision",
"master",
"-path",
"/test/test",
"-revision",
"master",
"-submodules=false",
"-sslVerify=false",
},
Expand Down Expand Up @@ -620,10 +620,10 @@ func TestGitResource_GetDownloadTaskModifier(t *testing.T) {
Args: []string{
"-url",
"[email protected]:test/test.git",
"-revision",
"master",
"-path",
"/test/test",
"-revision",
"master",
"-submodules=false",
"-sslVerify=false",
},
Expand Down Expand Up @@ -658,10 +658,10 @@ func TestGitResource_GetDownloadTaskModifier(t *testing.T) {
Args: []string{
"-url",
"[email protected]:test/test.git",
"-revision",
"master",
"-path",
"/test/test",
"-revision",
"master",
"-refspec",
"refs/tags/v1.0:refs/tags/v1.0 refs/heads/master:refs/heads/master",
"-submodules=false",
Expand All @@ -675,6 +675,42 @@ func TestGitResource_GetDownloadTaskModifier(t *testing.T) {
{Name: "NO_PROXY", Value: "no-proxy.git.com"},
},
},
}, {
desc: "Without Refspec and without revision",
gitResource: &git.Resource{
Name: "git-resource",
Type: resourcev1alpha1.PipelineResourceTypeGit,
URL: "[email protected]:test/test.git",
Revision: "",
Refspec: "",
GitImage: "override-with-git:latest",
Submodules: false,
Depth: 1,
SSLVerify: true,
HTTPProxy: "http-proxy.git.com",
HTTPSProxy: "https-proxy.git.com",
NOProxy: "no-proxy.git.com",
},
want: corev1.Container{
Name: "git-source-git-resource-twkr2",
Image: "override-with-git:latest",
Command: []string{"/ko-app/git-init"},
Args: []string{
"-url",
"[email protected]:test/test.git",
"-path",
"/test/test",
"-submodules=false",
},
WorkingDir: "/workspace",
Env: []corev1.EnvVar{
{Name: "TEKTON_RESOURCE_NAME", Value: "git-resource"},
{Name: "HOME", Value: pipeline.HomeDir},
{Name: "HTTP_PROXY", Value: "http-proxy.git.com"},
{Name: "HTTPS_PROXY", Value: "https-proxy.git.com"},
{Name: "NO_PROXY", Value: "no-proxy.git.com"},
},
},
}} {
t.Run(tc.desc, func(t *testing.T) {
ts := v1beta1.TaskSpec{}
Expand Down
9 changes: 6 additions & 3 deletions pkg/git/git.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,6 @@ func Fetch(logger *zap.SugaredLogger, spec FetchSpec) error {
return err
}

if spec.Revision == "" {
spec.Revision = "master"
}
if spec.Path != "" {
if _, err := run(logger, "", "init", spec.Path); err != nil {
return err
Expand All @@ -85,6 +82,12 @@ func Fetch(logger *zap.SugaredLogger, spec FetchSpec) error {
logger.Warnf("Failed to set http.sslVerify in git config: %s", err)
return err
}
if spec.Revision == "" {
spec.Revision = "HEAD"
if _, err := run(logger, "", "symbolic-ref", spec.Revision, "refs/remotes/origin/HEAD"); err != nil {
return err
}
}

fetchArgs := []string{"fetch"}
if spec.Submodules {
Expand Down
16 changes: 8 additions & 8 deletions pkg/reconciler/taskrun/resources/input_resource_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ func TestAddInputResourceToTask(t *testing.T) {
Name: "git-source-the-git-9l9zj",
Image: "override-with-git:latest",
Command: []string{"/ko-app/git-init"},
Args: []string{"-url", "https:/grafeas/kritis", "-revision", "master", "-path", "/workspace/gitspace"},
Args: []string{"-url", "https:/grafeas/kritis", "-path", "/workspace/gitspace"},
WorkingDir: "/workspace",
Env: []corev1.EnvVar{
{Name: "TEKTON_RESOURCE_NAME", Value: "the-git"},
Expand Down Expand Up @@ -410,7 +410,7 @@ func TestAddInputResourceToTask(t *testing.T) {
Name: "git-source-the-git-with-branch-9l9zj",
Image: "override-with-git:latest",
Command: []string{"/ko-app/git-init"},
Args: []string{"-url", "https:/grafeas/kritis", "-revision", "branch", "-path", "/workspace/gitspace"},
Args: []string{"-url", "https:/grafeas/kritis", "-path", "/workspace/gitspace", "-revision", "branch"},
WorkingDir: "/workspace",
Env: []corev1.EnvVar{
{Name: "TEKTON_RESOURCE_NAME", Value: "the-git-with-branch"},
Expand Down Expand Up @@ -458,7 +458,7 @@ func TestAddInputResourceToTask(t *testing.T) {
Name: "git-source-the-git-with-branch-mz4c7",
Image: "override-with-git:latest",
Command: []string{"/ko-app/git-init"},
Args: []string{"-url", "https:/grafeas/kritis", "-revision", "branch", "-path", "/workspace/gitspace"},
Args: []string{"-url", "https:/grafeas/kritis", "-path", "/workspace/gitspace", "-revision", "branch"},
WorkingDir: "/workspace",
Env: []corev1.EnvVar{
{Name: "TEKTON_RESOURCE_NAME", Value: "the-git-with-branch"},
Expand All @@ -468,7 +468,7 @@ func TestAddInputResourceToTask(t *testing.T) {
Name: "git-source-the-git-with-branch-9l9zj",
Image: "override-with-git:latest",
Command: []string{"/ko-app/git-init"},
Args: []string{"-url", "https:/grafeas/kritis", "-revision", "branch", "-path", "/workspace/git-duplicate-space"},
Args: []string{"-url", "https:/grafeas/kritis", "-path", "/workspace/git-duplicate-space", "-revision", "branch"},
WorkingDir: "/workspace",
Env: []corev1.EnvVar{
{Name: "TEKTON_RESOURCE_NAME", Value: "the-git-with-branch"},
Expand Down Expand Up @@ -509,7 +509,7 @@ func TestAddInputResourceToTask(t *testing.T) {
Name: "git-source-the-git-9l9zj",
Image: "override-with-git:latest",
Command: []string{"/ko-app/git-init"},
Args: []string{"-url", "https:/grafeas/kritis", "-revision", "master", "-path", "/workspace/gitspace"},
Args: []string{"-url", "https:/grafeas/kritis", "-path", "/workspace/gitspace"},
WorkingDir: "/workspace",
Env: []corev1.EnvVar{
{Name: "TEKTON_RESOURCE_NAME", Value: "the-git"},
Expand Down Expand Up @@ -550,7 +550,7 @@ func TestAddInputResourceToTask(t *testing.T) {
Name: "git-source-the-git-with-branch-9l9zj",
Image: "override-with-git:latest",
Command: []string{"/ko-app/git-init"},
Args: []string{"-url", "https:/grafeas/kritis", "-revision", "branch", "-path", "/workspace/gitspace"},
Args: []string{"-url", "https:/grafeas/kritis", "-path", "/workspace/gitspace", "-revision", "branch"},
WorkingDir: "/workspace",
Env: []corev1.EnvVar{
{Name: "TEKTON_RESOURCE_NAME", Value: "the-git-with-branch"},
Expand Down Expand Up @@ -639,7 +639,7 @@ func TestAddInputResourceToTask(t *testing.T) {
Name: "git-source-the-git-with-sslVerify-false-9l9zj",
Image: "override-with-git:latest",
Command: []string{"/ko-app/git-init"},
Args: []string{"-url", "https:/grafeas/kritis", "-revision", "branch", "-path", "/workspace/gitspace", "-sslVerify=false"},
Args: []string{"-url", "https:/grafeas/kritis", "-path", "/workspace/gitspace", "-revision", "branch", "-sslVerify=false"},
WorkingDir: "/workspace",
Env: []corev1.EnvVar{
{Name: "TEKTON_RESOURCE_NAME", Value: "the-git-with-sslVerify-false"},
Expand Down Expand Up @@ -964,7 +964,7 @@ gsutil cp gs://fake-bucket/rules.zip /workspace/gcs-dir
Name: "git-source-the-git-with-branch-9l9zj",
Image: "override-with-git:latest",
Command: []string{"/ko-app/git-init"},
Args: []string{"-url", "https:/grafeas/kritis", "-revision", "branch", "-path", "/workspace/gitspace"},
Args: []string{"-url", "https:/grafeas/kritis", "-path", "/workspace/gitspace", "-revision", "branch"},
WorkingDir: "/workspace",
Env: []corev1.EnvVar{
{Name: "TEKTON_RESOURCE_NAME", Value: "the-git-with-branch"},
Expand Down
10 changes: 4 additions & 6 deletions pkg/reconciler/taskrun/taskrun_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -940,7 +940,7 @@ func TestReconcile(t *testing.T) {
tb.Command(entrypointLocation),
tb.Args("-wait_file", "/tekton/tools/0", "-post_file", "/tekton/tools/1", "-termination_path",
"/tekton/termination", "-entrypoint", "/ko-app/git-init", "--", "-url", "https://foo.git",
"-revision", "master", "-path", "/workspace/workspace"),
"-path", "/workspace/workspace"),
tb.WorkingDir(workspaceDir),
tb.EnvVar("HOME", "/tekton/home"),
tb.EnvVar("TEKTON_RESOURCE_NAME", "workspace"),
Expand Down Expand Up @@ -1023,8 +1023,6 @@ func TestReconcile(t *testing.T) {
"--",
"-url",
"https://foo.git",
"-revision",
"master",
"-path",
"/workspace/workspace",
),
Expand Down Expand Up @@ -1132,10 +1130,10 @@ func TestReconcile(t *testing.T) {
"--",
"-url",
"github.com/foo/bar.git",
"-revision",
"rel-can",
"-path",
"/workspace/workspace"),
"/workspace/workspace",
"-revision",
"rel-can"),
tb.WorkingDir(workspaceDir),
// Note: the duplication of HOME env var here is intentional: our pod builder
// adds it first and the git pipelineresource adds its own to ensure that HOME
Expand Down
Loading

0 comments on commit 87c23e1

Please sign in to comment.