Add Bitbucket trigger for seed job
This commit is contained in:
		
							parent
							
								
									c16ca15521
								
							
						
					
					
						commit
						0f5cd0334d
					
				
							
								
								
									
										4
									
								
								go.mod
								
								
								
								
							
							
						
						
									
										4
									
								
								go.mod
								
								
								
								
							|  | @ -20,11 +20,11 @@ require ( | ||||||
| 	github.com/spf13/pflag v1.0.3 | 	github.com/spf13/pflag v1.0.3 | ||||||
| 	github.com/stretchr/testify v1.3.0 | 	github.com/stretchr/testify v1.3.0 | ||||||
| 	go.uber.org/zap v1.9.1 | 	go.uber.org/zap v1.9.1 | ||||||
| 	golang.org/x/crypto v0.0.0-20190909091759-094676da4a83 // indirect | 	golang.org/x/lint v0.0.0-20200130185559-910be7a94367 // indirect | ||||||
| 	golang.org/x/net v0.0.0-20190909003024-a7b16738d86b | 	golang.org/x/net v0.0.0-20190909003024-a7b16738d86b | ||||||
| 	golang.org/x/sys v0.0.0-20190910064555-bbd175535a8b // indirect | 	golang.org/x/sys v0.0.0-20190910064555-bbd175535a8b // indirect | ||||||
| 	golang.org/x/text v0.3.2 // indirect | 	golang.org/x/text v0.3.2 // indirect | ||||||
| 	golang.org/x/tools v0.0.0-20191004055002-72853e10c5a3 // indirect | 	golang.org/x/tools v0.0.0-20200205141839-4abfd4a1628e // indirect | ||||||
| 	gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect | 	gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect | ||||||
| 	gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df | 	gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df | ||||||
| 	k8s.io/api v0.0.0-20190612125737-db0771252981 | 	k8s.io/api v0.0.0-20190612125737-db0771252981 | ||||||
|  |  | ||||||
							
								
								
									
										9
									
								
								go.sum
								
								
								
								
							
							
						
						
									
										9
									
								
								go.sum
								
								
								
								
							|  | @ -419,6 +419,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk | ||||||
| golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= | golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= | ||||||
| golang.org/x/crypto v0.0.0-20190909091759-094676da4a83 h1:mgAKeshyNqWKdENOnQsg+8dRTwZFIwFaO3HNl52sweA= | golang.org/x/crypto v0.0.0-20190909091759-094676da4a83 h1:mgAKeshyNqWKdENOnQsg+8dRTwZFIwFaO3HNl52sweA= | ||||||
| golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | ||||||
|  | golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8= | ||||||
|  | golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | ||||||
| golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | ||||||
| golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= | golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= | ||||||
| golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= | golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= | ||||||
|  | @ -426,6 +428,9 @@ golang.org/x/lint v0.0.0-20181217174547-8f45f776aaf1/go.mod h1:UVdnD1Gm6xHRNCYTk | ||||||
| golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= | golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= | ||||||
| golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f h1:hX65Cu3JDlGH3uEdK7I99Ii+9kjD6mvnnpfLdEAH0x4= | golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f h1:hX65Cu3JDlGH3uEdK7I99Ii+9kjD6mvnnpfLdEAH0x4= | ||||||
| golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= | golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= | ||||||
|  | golang.org/x/lint v0.0.0-20200130185559-910be7a94367 h1:0IiAsCRByjO2QjX7ZPkw5oU9x+n1YqRL802rjC0c3Aw= | ||||||
|  | golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= | ||||||
|  | golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= | ||||||
| golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||||
| golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||||
| golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||||
|  | @ -507,7 +512,11 @@ golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3 | ||||||
| golang.org/x/tools v0.0.0-20190408170212-12dd9f86f350/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | golang.org/x/tools v0.0.0-20190408170212-12dd9f86f350/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | ||||||
| golang.org/x/tools v0.0.0-20191004055002-72853e10c5a3 h1:2AmBLzhAfXj+2HCW09VCkJtHIYgHTIPcTeYqgP7Bwt0= | golang.org/x/tools v0.0.0-20191004055002-72853e10c5a3 h1:2AmBLzhAfXj+2HCW09VCkJtHIYgHTIPcTeYqgP7Bwt0= | ||||||
| golang.org/x/tools v0.0.0-20191004055002-72853e10c5a3/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | golang.org/x/tools v0.0.0-20191004055002-72853e10c5a3/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||||
|  | golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||||
|  | golang.org/x/tools v0.0.0-20200205141839-4abfd4a1628e h1:JdEzLb04S2BEPrWqUDsgo7JXSq8pQlzIHbrBQN5o7TY= | ||||||
|  | golang.org/x/tools v0.0.0-20200205141839-4abfd4a1628e/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||||
| golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||||
|  | golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||||
| google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= | google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= | ||||||
| google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= | google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= | ||||||
| google.golang.org/api v0.0.0-20181220000619-583d854617af/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= | google.golang.org/api v0.0.0-20181220000619-583d854617af/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= | ||||||
|  |  | ||||||
|  | @ -552,6 +552,10 @@ type SeedJob struct { | ||||||
| 	// +optional
 | 	// +optional
 | ||||||
| 	JenkinsCredentialType JenkinsCredentialType `json:"credentialType,omitempty"` | 	JenkinsCredentialType JenkinsCredentialType `json:"credentialType,omitempty"` | ||||||
| 
 | 
 | ||||||
|  | 	// BitbucketPushTrigger is used for Bitbucket web hooks
 | ||||||
|  | 	// +optional
 | ||||||
|  | 	BitbucketPushTrigger bool `json:"bitbucketPushTrigger"` | ||||||
|  | 
 | ||||||
| 	// GitHubPushTrigger is used for GitHub web hooks
 | 	// GitHubPushTrigger is used for GitHub web hooks
 | ||||||
| 	// +optional
 | 	// +optional
 | ||||||
| 	GitHubPushTrigger bool `json:"githubPushTrigger"` | 	GitHubPushTrigger bool `json:"githubPushTrigger"` | ||||||
|  |  | ||||||
|  | @ -70,6 +70,9 @@ import org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition; | ||||||
| {{ if .GitHubPushTrigger }} | {{ if .GitHubPushTrigger }} | ||||||
| import com.cloudbees.jenkins.GitHubPushTrigger; | import com.cloudbees.jenkins.GitHubPushTrigger; | ||||||
| {{ end }} | {{ end }} | ||||||
|  | {{ if .BitbucketPushTrigger }} | ||||||
|  | import com.cloudbees.jenkins.plugins.BitBucketTrigger; | ||||||
|  | {{ end }} | ||||||
| import hudson.model.FreeStyleProject; | import hudson.model.FreeStyleProject; | ||||||
| import hudson.model.labels.LabelAtom; | import hudson.model.labels.LabelAtom; | ||||||
| import hudson.plugins.git.BranchSpec; | import hudson.plugins.git.BranchSpec; | ||||||
|  | @ -128,6 +131,10 @@ jobRef.addTrigger(new SCMTrigger("{{ .PollSCM }}")) | ||||||
| jobRef.addTrigger(new GitHubPushTrigger()) | jobRef.addTrigger(new GitHubPushTrigger()) | ||||||
| {{ end }} | {{ end }} | ||||||
| 
 | 
 | ||||||
|  | {{ if .BitbucketPushTrigger }} | ||||||
|  | jobRef.addTrigger(new BitBucketTrigger()) | ||||||
|  | {{ end }} | ||||||
|  | 
 | ||||||
| {{ if .BuildPeriodically }} | {{ if .BuildPeriodically }} | ||||||
| jobRef.addTrigger(new TimerTrigger("{{ .BuildPeriodically }}")) | jobRef.addTrigger(new TimerTrigger("{{ .BuildPeriodically }}")) | ||||||
| {{ end}} | {{ end}} | ||||||
|  | @ -470,6 +477,7 @@ func seedJobCreatingGroovyScript(seedJob v1alpha2.SeedJob) (string, error) { | ||||||
| 		Targets               string | 		Targets               string | ||||||
| 		RepositoryBranch      string | 		RepositoryBranch      string | ||||||
| 		RepositoryURL         string | 		RepositoryURL         string | ||||||
|  | 		BitbucketPushTrigger  bool | ||||||
| 		GitHubPushTrigger     bool | 		GitHubPushTrigger     bool | ||||||
| 		BuildPeriodically     string | 		BuildPeriodically     string | ||||||
| 		PollSCM               string | 		PollSCM               string | ||||||
|  | @ -485,6 +493,7 @@ func seedJobCreatingGroovyScript(seedJob v1alpha2.SeedJob) (string, error) { | ||||||
| 		Targets:               seedJob.Targets, | 		Targets:               seedJob.Targets, | ||||||
| 		RepositoryBranch:      seedJob.RepositoryBranch, | 		RepositoryBranch:      seedJob.RepositoryBranch, | ||||||
| 		RepositoryURL:         seedJob.RepositoryURL, | 		RepositoryURL:         seedJob.RepositoryURL, | ||||||
|  | 		BitbucketPushTrigger:  seedJob.BitbucketPushTrigger, | ||||||
| 		GitHubPushTrigger:     seedJob.GitHubPushTrigger, | 		GitHubPushTrigger:     seedJob.GitHubPushTrigger, | ||||||
| 		BuildPeriodically:     seedJob.BuildPeriodically, | 		BuildPeriodically:     seedJob.BuildPeriodically, | ||||||
| 		PollSCM:               seedJob.PollSCM, | 		PollSCM:               seedJob.PollSCM, | ||||||
|  |  | ||||||
|  | @ -103,6 +103,14 @@ func (s *SeedJobs) ValidateSeedJobs(jenkins v1alpha2.Jenkins) ([]string, error) | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  | 
 | ||||||
|  | 		if seedJob.BitbucketPushTrigger { | ||||||
|  | 			if msg := s.validateBitbucketPushTrigger(jenkins); len(msg) > 0 { | ||||||
|  | 				for _, m := range msg { | ||||||
|  | 					messages = append(messages, fmt.Sprintf("seedJob `%s` %s", seedJob.ID, m)) | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return messages, nil | 	return messages, nil | ||||||
|  | @ -119,24 +127,39 @@ func (s *SeedJobs) validateSchedule(job v1alpha2.SeedJob, str string, key string | ||||||
| 
 | 
 | ||||||
| func (s *SeedJobs) validateGitHubPushTrigger(jenkins v1alpha2.Jenkins) []string { | func (s *SeedJobs) validateGitHubPushTrigger(jenkins v1alpha2.Jenkins) []string { | ||||||
| 	var messages []string | 	var messages []string | ||||||
|  | 	if err := checkPluginExists(jenkins, "github"); err != nil { | ||||||
|  | 		return append(messages, fmt.Sprintf("githubPushTrigger cannot be enabled: %s", err)) | ||||||
|  | 	} | ||||||
|  | 	return messages | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (s *SeedJobs) validateBitbucketPushTrigger(jenkins v1alpha2.Jenkins) []string { | ||||||
|  | 	var messages []string | ||||||
|  | 	if err := checkPluginExists(jenkins, "bitbucket"); err != nil { | ||||||
|  | 		return append(messages, fmt.Sprintf("bitbucketPushTrigger cannot be enabled: %s", err)) | ||||||
|  | 	} | ||||||
|  | 	return messages | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func checkPluginExists(jenkins v1alpha2.Jenkins, name string) error { | ||||||
| 	exists := false | 	exists := false | ||||||
| 	for _, plugin := range jenkins.Spec.Master.BasePlugins { | 	for _, plugin := range jenkins.Spec.Master.BasePlugins { | ||||||
| 		if plugin.Name == "github" { | 		if plugin.Name == name { | ||||||
| 			exists = true | 			exists = true | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	userExists := false | 	userExists := false | ||||||
| 	for _, plugin := range jenkins.Spec.Master.Plugins { | 	for _, plugin := range jenkins.Spec.Master.Plugins { | ||||||
| 		if plugin.Name == "github" { | 		if plugin.Name == name { | ||||||
| 			userExists = true | 			userExists = true | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if !exists && !userExists { | 	if !exists && !userExists { | ||||||
| 		messages = append(messages, "githubPushTrigger is set. This function requires `github` plugin installed in .Spec.Master.Plugins because seed jobs Push Trigger function needs it") | 		return fmt.Errorf("`%s` plugin not installed", name) | ||||||
| 	} | 	} | ||||||
| 	return messages | 	return nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (s *SeedJobs) validateIfIDIsUnique(seedJobs []v1alpha2.SeedJob) []string { | func (s *SeedJobs) validateIfIDIsUnique(seedJobs []v1alpha2.SeedJob) []string { | ||||||
|  |  | ||||||
|  | @ -645,9 +645,9 @@ func TestValidateSeedJobs(t *testing.T) { | ||||||
| 
 | 
 | ||||||
| 		assert.NoError(t, err) | 		assert.NoError(t, err) | ||||||
| 
 | 
 | ||||||
| 		assert.Equal(t, result, []string{"seedJob `example` githubPushTrigger is set. This function requires `github` plugin installed in .Spec.Master.Plugins because seed jobs Push Trigger function needs it"}) | 		assert.Equal(t, result, []string{"seedJob `example` githubPushTrigger cannot be enabled: `github` plugin not installed"}) | ||||||
| 	}) | 	}) | ||||||
| 	t.Run("Invalid with set githubPushTrigger and not installed github plugin", func(t *testing.T) { | 	t.Run("Valid with set githubPushTrigger and installed github plugin", func(t *testing.T) { | ||||||
| 		jenkins := v1alpha2.Jenkins{ | 		jenkins := v1alpha2.Jenkins{ | ||||||
| 			Spec: v1alpha2.JenkinsSpec{ | 			Spec: v1alpha2.JenkinsSpec{ | ||||||
| 				SeedJobs: []v1alpha2.SeedJob{ | 				SeedJobs: []v1alpha2.SeedJob{ | ||||||
|  | @ -680,6 +680,74 @@ func TestValidateSeedJobs(t *testing.T) { | ||||||
| 		seedJobs := New(nil, config, logf.ZapLogger(false)) | 		seedJobs := New(nil, config, logf.ZapLogger(false)) | ||||||
| 		result, err := seedJobs.ValidateSeedJobs(jenkins) | 		result, err := seedJobs.ValidateSeedJobs(jenkins) | ||||||
| 
 | 
 | ||||||
|  | 		assert.NoError(t, err) | ||||||
|  | 		assert.Nil(t, result) | ||||||
|  | 	}) | ||||||
|  | 	t.Run("Invalid with set bitbucketPushTrigger and not installed bitbucket plugin", func(t *testing.T) { | ||||||
|  | 		jenkins := v1alpha2.Jenkins{ | ||||||
|  | 			Spec: v1alpha2.JenkinsSpec{ | ||||||
|  | 				SeedJobs: []v1alpha2.SeedJob{ | ||||||
|  | 					{ | ||||||
|  | 						ID:                    "example", | ||||||
|  | 						CredentialID:          "jenkins-operator-e2e", | ||||||
|  | 						JenkinsCredentialType: v1alpha2.NoJenkinsCredentialCredentialType, | ||||||
|  | 						Targets:               "cicd/jobs/*.jenkins", | ||||||
|  | 						RepositoryBranch:      "master", | ||||||
|  | 						RepositoryURL:         "https://github.com/jenkinsci/kubernetes-operator.git", | ||||||
|  | 						BitbucketPushTrigger:  true, | ||||||
|  | 					}, | ||||||
|  | 				}, | ||||||
|  | 			}, | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		fakeClient := fake.NewFakeClient() | ||||||
|  | 
 | ||||||
|  | 		config := configuration.Configuration{ | ||||||
|  | 			Client:        fakeClient, | ||||||
|  | 			ClientSet:     kubernetes.Clientset{}, | ||||||
|  | 			Notifications: nil, | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		seedJobs := New(nil, config, logf.ZapLogger(false)) | ||||||
|  | 		result, err := seedJobs.ValidateSeedJobs(jenkins) | ||||||
|  | 
 | ||||||
|  | 		assert.NoError(t, err) | ||||||
|  | 
 | ||||||
|  | 		assert.Equal(t, result, []string{"seedJob `example` bitbucketPushTrigger cannot be enabled: `bitbucket` plugin not installed"}) | ||||||
|  | 	}) | ||||||
|  | 	t.Run("Valid with set bitbucketPushTrigger and installed Bitbucket plugin", func(t *testing.T) { | ||||||
|  | 		jenkins := v1alpha2.Jenkins{ | ||||||
|  | 			Spec: v1alpha2.JenkinsSpec{ | ||||||
|  | 				SeedJobs: []v1alpha2.SeedJob{ | ||||||
|  | 					{ | ||||||
|  | 						ID:                    "example", | ||||||
|  | 						CredentialID:          "jenkins-operator-e2e", | ||||||
|  | 						JenkinsCredentialType: v1alpha2.NoJenkinsCredentialCredentialType, | ||||||
|  | 						Targets:               "cicd/jobs/*.jenkins", | ||||||
|  | 						RepositoryBranch:      "master", | ||||||
|  | 						RepositoryURL:         "https://github.com/jenkinsci/kubernetes-operator.git", | ||||||
|  | 						BitbucketPushTrigger:  true, | ||||||
|  | 					}, | ||||||
|  | 				}, | ||||||
|  | 				Master: v1alpha2.JenkinsMaster{ | ||||||
|  | 					Plugins: []v1alpha2.Plugin{ | ||||||
|  | 						{Name: "bitbucket", Version: "latest"}, | ||||||
|  | 					}, | ||||||
|  | 				}, | ||||||
|  | 			}, | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		fakeClient := fake.NewFakeClient() | ||||||
|  | 
 | ||||||
|  | 		config := configuration.Configuration{ | ||||||
|  | 			Client:        fakeClient, | ||||||
|  | 			ClientSet:     kubernetes.Clientset{}, | ||||||
|  | 			Notifications: nil, | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		seedJobs := New(nil, config, logf.ZapLogger(false)) | ||||||
|  | 		result, err := seedJobs.ValidateSeedJobs(jenkins) | ||||||
|  | 
 | ||||||
| 		assert.NoError(t, err) | 		assert.NoError(t, err) | ||||||
| 		assert.Nil(t, result) | 		assert.Nil(t, result) | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue