Remove cron validation (#748)

* Remove cron validation

* Bump git plugin
This commit is contained in:
Piotr Ryba 2022-06-20 20:13:35 +02:00 committed by GitHub
parent 56b65aed16
commit a97f283fb9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 9 additions and 70 deletions

View File

@ -353,7 +353,7 @@ type JenkinsMaster struct {
// - name: configuration-as-code // - name: configuration-as-code
// version: "1346.ve8cfa_3473c94" // version: "1346.ve8cfa_3473c94"
// - name: git // - name: git
// version: "4.10.3" // version: "4.11.3"
// - name: job-dsl // - name: job-dsl
// version: "1.78.1" // version: "1.78.1"
// - name: kubernetes // - name: kubernetes

View File

@ -159,7 +159,7 @@ spec:
description: 'BasePlugins contains plugins required by operator description: 'BasePlugins contains plugins required by operator
Defaults to : - name: kubernetes version: "1.31.3" - name: Defaults to : - name: kubernetes version: "1.31.3" - name:
workflow-job version: "1145.v7f2433caa07f" - name: workflow-aggregator version: workflow-job version: "1145.v7f2433caa07f" - name: workflow-aggregator version:
"2.6" - name: git version: "4.10.3" - name: job-dsl version: "2.6" - name: git version: "4.11.3" - name: job-dsl version:
"1.78.1" - name: configuration-as-code version: "1346.ve8cfa_3473c94" - name: "1.78.1" - name: configuration-as-code version: "1346.ve8cfa_3473c94" - name:
kubernetes-credentials-provider version: "0.20"' kubernetes-credentials-provider version: "0.20"'
items: items:

View File

@ -75,7 +75,7 @@ jenkins:
# - name: configuration-as-code # - name: configuration-as-code
# version: "1346.ve8cfa_3473c94" # version: "1346.ve8cfa_3473c94"
# - name: git # - name: git
# version: 4.10.3 # version: 4.11.3
# - name: job-dsl # - name: job-dsl
# version: "1.78.1" # version: "1.78.1"
# - name: kubernetes # - name: kubernetes

View File

@ -159,7 +159,7 @@ spec:
description: 'BasePlugins contains plugins required by operator description: 'BasePlugins contains plugins required by operator
Defaults to : - name: kubernetes version: "1.31.3" - name: Defaults to : - name: kubernetes version: "1.31.3" - name:
workflow-job version: "1145.v7f2433caa07f" - name: workflow-aggregator version: workflow-job version: "1145.v7f2433caa07f" - name: workflow-aggregator version:
"2.6" - name: git version: "4.10.3" - name: job-dsl version: "2.6" - name: git version: "4.11.3" - name: job-dsl version:
"1.78.1" - name: configuration-as-code version: "1346.ve8cfa_3473c94" - name: "1.78.1" - name: configuration-as-code version: "1346.ve8cfa_3473c94" - name:
kubernetes-credentials-provider version: "0.20"' kubernetes-credentials-provider version: "0.20"'
items: items:

1
go.mod
View File

@ -15,7 +15,6 @@ require (
github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/openshift/api v3.9.0+incompatible github.com/openshift/api v3.9.0+incompatible
github.com/pkg/errors v0.9.1 github.com/pkg/errors v0.9.1
github.com/robfig/cron v1.2.0
github.com/stretchr/testify v1.6.1 github.com/stretchr/testify v1.6.1
go.uber.org/zap v1.15.0 go.uber.org/zap v1.15.0
golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0 golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0

View File

@ -163,7 +163,6 @@ type SeedJobs interface {
isRecreatePodNeeded(jenkins v1alpha2.Jenkins) bool isRecreatePodNeeded(jenkins v1alpha2.Jenkins) bool
createAgent(jenkinsClient jenkinsclient.Jenkins, k8sClient client.Client, jenkinsManifest *v1alpha2.Jenkins, namespace string, agentName string) error createAgent(jenkinsClient jenkinsclient.Jenkins, k8sClient client.Client, jenkinsManifest *v1alpha2.Jenkins, namespace string, agentName string) error
ValidateSeedJobs(jenkins v1alpha2.Jenkins) ([]string, error) ValidateSeedJobs(jenkins v1alpha2.Jenkins) ([]string, error)
validateSchedule(job v1alpha2.SeedJob, str string, key string) []string
validateGitHubPushTrigger(jenkins v1alpha2.Jenkins) []string validateGitHubPushTrigger(jenkins v1alpha2.Jenkins) []string
validateBitbucketPushTrigger(jenkins v1alpha2.Jenkins) []string validateBitbucketPushTrigger(jenkins v1alpha2.Jenkins) []string
validateIfIDIsUnique(seedJobs []v1alpha2.SeedJob) []string validateIfIDIsUnique(seedJobs []v1alpha2.SeedJob) []string

View File

@ -8,7 +8,6 @@ import (
"github.com/jenkinsci/kubernetes-operator/api/v1alpha2" "github.com/jenkinsci/kubernetes-operator/api/v1alpha2"
stackerr "github.com/pkg/errors" stackerr "github.com/pkg/errors"
"github.com/robfig/cron"
"golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh"
v1 "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors" apierrors "k8s.io/apimachinery/pkg/api/errors"
@ -89,22 +88,6 @@ func (s *seedJobs) ValidateSeedJobs(jenkins v1alpha2.Jenkins) ([]string, error)
} }
} }
if len(seedJob.BuildPeriodically) > 0 {
if msg := s.validateSchedule(seedJob, seedJob.BuildPeriodically, "buildPeriodically"); len(msg) > 0 {
for _, m := range msg {
messages = append(messages, fmt.Sprintf("seedJob `%s` %s", seedJob.ID, m))
}
}
}
if len(seedJob.PollSCM) > 0 {
if msg := s.validateSchedule(seedJob, seedJob.PollSCM, "pollSCM"); len(msg) > 0 {
for _, m := range msg {
messages = append(messages, fmt.Sprintf("seedJob `%s` %s", seedJob.ID, m))
}
}
}
if seedJob.GitHubPushTrigger { if seedJob.GitHubPushTrigger {
if msg := s.validateGitHubPushTrigger(jenkins); len(msg) > 0 { if msg := s.validateGitHubPushTrigger(jenkins); len(msg) > 0 {
for _, m := range msg { for _, m := range msg {
@ -125,15 +108,6 @@ func (s *seedJobs) ValidateSeedJobs(jenkins v1alpha2.Jenkins) ([]string, error)
return messages, nil return messages, nil
} }
func (s *seedJobs) validateSchedule(job v1alpha2.SeedJob, str string, key string) []string {
var messages []string
_, err := cron.Parse(str)
if err != nil {
messages = append(messages, fmt.Sprintf("`%s` schedule '%s' is invalid cron spec in `%s`", key, str, job.ID))
}
return messages
}
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 { if err := checkPluginExists(jenkins, "github"); err != nil {

View File

@ -696,7 +696,7 @@ func TestValidateSeedJobs(t *testing.T) {
TypeMeta: secretTypeMeta, TypeMeta: secretTypeMeta,
ObjectMeta: secretObjectMeta, ObjectMeta: secretObjectMeta,
Data: map[string][]byte{ Data: map[string][]byte{
AppIDSecretKey: []byte("some-id"), AppIDSecretKey: []byte("some-id"),
PrivateKeySecretKey: []byte("some-key"), PrivateKeySecretKey: []byte("some-key"),
}, },
} }
@ -737,7 +737,7 @@ func TestValidateSeedJobs(t *testing.T) {
TypeMeta: secretTypeMeta, TypeMeta: secretTypeMeta,
ObjectMeta: secretObjectMeta, ObjectMeta: secretObjectMeta,
Data: map[string][]byte{ Data: map[string][]byte{
AppIDSecretKey: []byte(""), AppIDSecretKey: []byte(""),
PrivateKeySecretKey: []byte("some-key"), PrivateKeySecretKey: []byte("some-key"),
}, },
} }
@ -779,7 +779,7 @@ func TestValidateSeedJobs(t *testing.T) {
TypeMeta: secretTypeMeta, TypeMeta: secretTypeMeta,
ObjectMeta: secretObjectMeta, ObjectMeta: secretObjectMeta,
Data: map[string][]byte{ Data: map[string][]byte{
AppIDSecretKey: []byte("some-id"), AppIDSecretKey: []byte("some-id"),
PrivateKeySecretKey: []byte(""), PrivateKeySecretKey: []byte(""),
}, },
} }
@ -883,39 +883,6 @@ func TestValidateSeedJobs(t *testing.T) {
assert.Equal(t, result, []string{"seedJob `example` required data 'privateKey' not found in secret 'deploy-keys'", "seedJob `example` required data 'privateKey' is empty in secret 'deploy-keys'"}) assert.Equal(t, result, []string{"seedJob `example` required data 'privateKey' not found in secret 'deploy-keys'", "seedJob `example` required data 'privateKey' is empty in secret 'deploy-keys'"})
}) })
t.Run("Invalid with wrong cron spec", 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",
BuildPeriodically: "invalid-cron-spec",
},
},
},
}
fakeClient := fake.NewClientBuilder().Build()
config := configuration.Configuration{
Client: fakeClient,
ClientSet: kubernetes.Clientset{},
Notifications: nil,
Jenkins: &v1alpha2.Jenkins{},
}
seedJobs := New(nil, config)
result, err := seedJobs.ValidateSeedJobs(jenkins)
assert.NoError(t, err)
assert.Equal(t, result, []string{"seedJob `example` `buildPeriodically` schedule 'invalid-cron-spec' is invalid cron spec in `example`"})
})
t.Run("Valid with good cron spec", func(t *testing.T) { t.Run("Valid with good cron spec", func(t *testing.T) {
jenkins := v1alpha2.Jenkins{ jenkins := v1alpha2.Jenkins{
Spec: v1alpha2.JenkinsSpec{ Spec: v1alpha2.JenkinsSpec{

View File

@ -2,7 +2,7 @@ package plugins
const ( const (
configurationAsCodePlugin = "configuration-as-code:1346.ve8cfa_3473c94" configurationAsCodePlugin = "configuration-as-code:1346.ve8cfa_3473c94"
gitPlugin = "git:4.10.3" gitPlugin = "git:4.11.3"
jobDslPlugin = "job-dsl:1.78.1" jobDslPlugin = "job-dsl:1.78.1"
kubernetesPlugin = "kubernetes:1.31.3" kubernetesPlugin = "kubernetes:1.31.3"
kubernetesCredentialsProviderPlugin = "kubernetes-credentials-provider:0.20" kubernetesCredentialsProviderPlugin = "kubernetes-credentials-provider:0.20"

View File

@ -25,7 +25,7 @@ const e2e = "e2e"
var expectedBasePluginsList = []plugins.Plugin{ var expectedBasePluginsList = []plugins.Plugin{
plugins.Must(plugins.New("configuration-as-code:1346.ve8cfa_3473c94")), plugins.Must(plugins.New("configuration-as-code:1346.ve8cfa_3473c94")),
plugins.Must(plugins.New("git:4.10.3")), plugins.Must(plugins.New("git:4.11.3")),
plugins.Must(plugins.New("kubernetes:1.31.3")), plugins.Must(plugins.New("kubernetes:1.31.3")),
plugins.Must(plugins.New("kubernetes-credentials-provider:0.20")), plugins.Must(plugins.New("kubernetes-credentials-provider:0.20")),
plugins.Must(plugins.New("job-dsl:1.78.1")), plugins.Must(plugins.New("job-dsl:1.78.1")),