From f3051169cd1b19e03ac526fe1f572822a019d5bf Mon Sep 17 00:00:00 2001 From: brokenpip3 Date: Sun, 2 Jun 2024 18:04:49 +0200 Subject: [PATCH 1/7] suppress seed warning logs by using websocket, update img --- pkg/configuration/user/seedjobs/seedjobs.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/pkg/configuration/user/seedjobs/seedjobs.go b/pkg/configuration/user/seedjobs/seedjobs.go index f7522f671..7ca60241e 100644 --- a/pkg/configuration/user/seedjobs/seedjobs.go +++ b/pkg/configuration/user/seedjobs/seedjobs.go @@ -46,7 +46,7 @@ const ( AgentName = "seed-job-agent" // DefaultAgentImage is the default image used for the seed-job agent - defaultAgentImage = "jenkins/inbound-agent:3206.vb_15dcf73f6a_9-3" + defaultAgentImage = "jenkins/inbound-agent:3248.v65ecb_254c298-4" creatingGroovyScriptName = "seed-job-groovy-script.groovy" @@ -455,10 +455,8 @@ func agentDeployment(jenkins *v1alpha2.Jenkins, namespace string, agentName stri Image: agentImage, Env: []corev1.EnvVar{ { - Name: "JENKINS_TUNNEL", - Value: fmt.Sprintf("%s:%d", - jenkinsSlavesServiceFQDN, - jenkins.Spec.SlaveService.Port), + Name: "JENKINS_WEB_SOCKET", + Value: "true", }, { Name: "JENKINS_SECRET", From 6e2076ff3c73edc7acd3b15bdcaf72d9292efc99 Mon Sep 17 00:00:00 2001 From: brokenpip3 Date: Sun, 2 Jun 2024 18:05:03 +0200 Subject: [PATCH 2/7] update to latest lts and plugin version --- chart/jenkins-operator/README.md | 2 +- chart/jenkins-operator/values.yaml | 12 ++++++------ config.base.env | 2 +- pkg/constants/constants.go | 2 +- pkg/plugins/base_plugins.go | 10 +++++----- test/bats/1-deploy.bats | 4 ++-- test/bats/2-deploy-with-more-options.bats | 4 ++-- test/bats/3-deploy-with-webhook.bats | 4 ++-- test/e2e/configuration_test.go | 10 +++++----- test/e2e/test_utility.go | 2 +- test/helm/helm_test.go | 2 +- 11 files changed, 27 insertions(+), 27 deletions(-) diff --git a/chart/jenkins-operator/README.md b/chart/jenkins-operator/README.md index 96e510919..ccaaae9c4 100644 --- a/chart/jenkins-operator/README.md +++ b/chart/jenkins-operator/README.md @@ -54,7 +54,7 @@ Kubernetes native operator which fully manages Jenkins on Kubernetes | jenkins.enabled | bool | `true` | | | jenkins.env | list | `[]` | | | jenkins.hostAliases | object | `{}` | | -| jenkins.image | string | `"jenkins/jenkins:2.440.1-lts"` | | +| jenkins.image | string | `"jenkins/jenkins:2.452.1-lts"` | | | jenkins.imagePullPolicy | string | `"Always"` | | | jenkins.imagePullSecrets | list | `[]` | | | jenkins.labels | object | `{}` | | diff --git a/chart/jenkins-operator/values.yaml b/chart/jenkins-operator/values.yaml index 388de22ec..ed1e401d8 100644 --- a/chart/jenkins-operator/values.yaml +++ b/chart/jenkins-operator/values.yaml @@ -36,7 +36,7 @@ jenkins: # image is the name (and tag) of the Jenkins instance # Default: jenkins/jenkins:lts # It's recommended to use LTS (tag: "lts") version - image: jenkins/jenkins:2.440.1-lts + image: jenkins/jenkins:2.452.1-lts # env contains jenkins container environment variables env: [] @@ -90,19 +90,19 @@ jenkins: # # basePlugins: # - name: kubernetes - # version: 4186.v1d804571d5d4 + # version: 4238.v41b_3ef14a_5d8 # - name: workflow-job - # version: 1385.vb_58b_86ea_fff1 + # version: 1400.v7fd111b_ec82f # - name: workflow-aggregator # version: 596.v8c21c963d92d # - name: git - # version: 5.2.1 + # version: 5.2.2 # - name: job-dsl # version: "1.87" # - name: configuration-as-code - # version: 11775.v810dc950b_514 + # version: 1810.v9b_c30a_249a_4c # - name: kubernetes-credentials-provider - # version: 1.234.vf3013b_35f5b_a + # version: 1.262.v2670ef7ea_0c5 basePlugins: [] diff --git a/config.base.env b/config.base.env index d7bc92bf8..5d6787d17 100644 --- a/config.base.env +++ b/config.base.env @@ -7,7 +7,7 @@ GO_VERSION="1.15.6" HELM_VERSION="3.12.3" IMAGE_PULL_MODE="local" KIND_CLUSTER_NAME="jenkins" -LATEST_LTS_VERSION="2.440.1" +LATEST_LTS_VERSION="2.452.1" NAME="kubernetes-operator" NAMESPACE="default" OPERATOR_SDK_VERSION="1.3.0" diff --git a/pkg/constants/constants.go b/pkg/constants/constants.go index acd0fc33d..2a2be9e30 100644 --- a/pkg/constants/constants.go +++ b/pkg/constants/constants.go @@ -8,7 +8,7 @@ const ( // SeedJobSuffix is a suffix added for all seed jobs SeedJobSuffix = "job-dsl-seed" // DefaultJenkinsMasterImage is the default Jenkins master docker image - DefaultJenkinsMasterImage = "jenkins/jenkins:2.440.1-lts" + DefaultJenkinsMasterImage = "jenkins/jenkins:2.452.1-lts" // DefaultHTTPPortInt32 is the default Jenkins HTTP port DefaultHTTPPortInt32 = int32(8080) // DefaultSlavePortInt32 is the default Jenkins port for slaves diff --git a/pkg/plugins/base_plugins.go b/pkg/plugins/base_plugins.go index 9ea3f287a..8f35410fe 100644 --- a/pkg/plugins/base_plugins.go +++ b/pkg/plugins/base_plugins.go @@ -1,13 +1,13 @@ package plugins const ( - configurationAsCodePlugin = "configuration-as-code:1775.v810dc950b_514" - gitPlugin = "git:5.2.1" + configurationAsCodePlugin = "configuration-as-code:1810.v9b_c30a_249a_4c" + gitPlugin = "git:5.2.2" jobDslPlugin = "job-dsl:1.87" - kubernetesPlugin = "kubernetes:4186.v1d804571d5d4" - kubernetesCredentialsProviderPlugin = "kubernetes-credentials-provider:1.258.v95949f923a_a_e" + kubernetesPlugin = "kubernetes:4238.v41b_3ef14a_5d8" + kubernetesCredentialsProviderPlugin = "kubernetes-credentials-provider:1.262.v2670ef7ea_0c5" workflowAggregatorPlugin = "workflow-aggregator:596.v8c21c963d92d" - workflowJobPlugin = "workflow-job:1385.vb_58b_86ea_fff1" + workflowJobPlugin = "workflow-job:1400.v7fd111b_ec82f" ) // basePluginsList contains plugins to install by operator. diff --git a/test/bats/1-deploy.bats b/test/bats/1-deploy.bats index 7be9cba3c..0dcb70b62 100644 --- a/test/bats/1-deploy.bats +++ b/test/bats/1-deploy.bats @@ -33,7 +33,7 @@ diag() { --set namespace=${DETIK_CLIENT_NAMESPACE} \ --set operator.image=${OPERATOR_IMAGE} \ --set jenkins.latestPlugins=true \ - --set jenkins.image="jenkins/jenkins:2.440.1-lts" \ + --set jenkins.image="jenkins/jenkins:2.452.1-lts" \ --set jenkins.backup.makeBackupBeforePodDeletion=false \ jenkins-operator/jenkins-operator --version=$(cat VERSION.txt | sed 's/v//') assert_success @@ -126,7 +126,7 @@ diag() { --set namespace=${DETIK_CLIENT_NAMESPACE} \ --set operator.image=${OPERATOR_IMAGE} \ --set jenkins.latestPlugins=true \ - --set jenkins.image="jenkins/jenkins:2.440.1-lts" \ + --set jenkins.image="jenkins/jenkins:2.452.1-lts" \ --set jenkins.backup.makeBackupBeforePodDeletion=false \ chart/jenkins-operator assert_success diff --git a/test/bats/2-deploy-with-more-options.bats b/test/bats/2-deploy-with-more-options.bats index 43590eba6..d4ce27d35 100644 --- a/test/bats/2-deploy-with-more-options.bats +++ b/test/bats/2-deploy-with-more-options.bats @@ -29,7 +29,7 @@ setup() { --set operator.image=${OPERATOR_IMAGE} \ --set jenkins.latestPlugins=true \ --set jenkins.nodeSelector.batstest=yep \ - --set jenkins.image="jenkins/jenkins:2.440.1-lts" \ + --set jenkins.image="jenkins/jenkins:2.452.1-lts" \ --set jenkins.backup.makeBackupBeforePodDeletion=false \ jenkins-operator/jenkins-operator --version=$(cat VERSION.txt | sed 's/v//') assert_success @@ -101,7 +101,7 @@ setup() { --set operator.image=${OPERATOR_IMAGE} \ --set jenkins.latestPlugins=true \ --set jenkins.nodeSelector.batstest=yep \ - --set jenkins.image="jenkins/jenkins:2.440.1-lts" \ + --set jenkins.image="jenkins/jenkins:2.452.1-lts" \ --set jenkins.backup.makeBackupBeforePodDeletion=false \ chart/jenkins-operator assert_success diff --git a/test/bats/3-deploy-with-webhook.bats b/test/bats/3-deploy-with-webhook.bats index e04bbc9b8..c832f82fe 100644 --- a/test/bats/3-deploy-with-webhook.bats +++ b/test/bats/3-deploy-with-webhook.bats @@ -29,7 +29,7 @@ setup() { --set namespace=${DETIK_CLIENT_NAMESPACE} \ --set operator.image=${OPERATOR_IMAGE} \ --set jenkins.latestPlugins=true \ - --set jenkins.image="jenkins/jenkins:2.440.1-lts" \ + --set jenkins.image="jenkins/jenkins:2.452.1-lts" \ --set jenkins.backup.makeBackupBeforePodDeletion=true \ --set webhook.enabled=true \ jenkins-operator/jenkins-operator --version=$(cat VERSION.txt | sed 's/v//') @@ -86,7 +86,7 @@ setup() { --set namespace=${DETIK_CLIENT_NAMESPACE} \ --set operator.image=${OPERATOR_IMAGE} \ --set jenkins.latestPlugins=true \ - --set jenkins.image="jenkins/jenkins:2.440.1-lts" \ + --set jenkins.image="jenkins/jenkins:2.452.1-lts" \ --set jenkins.backup.makeBackupBeforePodDeletion=true \ --set webhook.enabled=true \ chart/jenkins-operator diff --git a/test/e2e/configuration_test.go b/test/e2e/configuration_test.go index ebc165d12..107f971cc 100644 --- a/test/e2e/configuration_test.go +++ b/test/e2e/configuration_test.go @@ -24,13 +24,13 @@ import ( const e2e = "e2e" var expectedBasePluginsList = []plugins.Plugin{ - plugins.Must(plugins.New("configuration-as-code:1775.v810dc950b_514")), - plugins.Must(plugins.New("git:5.2.1")), - plugins.Must(plugins.New("kubernetes:4186.v1d804571d5d4")), - plugins.Must(plugins.New("kubernetes-credentials-provider:1.258.v95949f923a_a_e")), + plugins.Must(plugins.New("configuration-as-code:1810.v9b_c30a_249a_4c")), + plugins.Must(plugins.New("git:5.2.2")), + plugins.Must(plugins.New("kubernetes:4238.v41b_3ef14a_5d8")), + plugins.Must(plugins.New("kubernetes-credentials-provider:1.262.v2670ef7ea_0c5")), plugins.Must(plugins.New("job-dsl:1.87")), plugins.Must(plugins.New("workflow-aggregator:596.v8c21c963d92d")), - plugins.Must(plugins.New("workflow-job:1385.vb_58b_86ea_fff1")), + plugins.Must(plugins.New("workflow-job:1400.v7fd111b_ec82f")), } func createUserConfigurationSecret(namespace string, stringData map[string]string) { diff --git a/test/e2e/test_utility.go b/test/e2e/test_utility.go index bce1ee0dd..b3900e41e 100644 --- a/test/e2e/test_utility.go +++ b/test/e2e/test_utility.go @@ -21,7 +21,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/envtest" ) -const JenkinsTestImage = "jenkins/jenkins:2.440.1-lts" +const JenkinsTestImage = "jenkins/jenkins:2.452.1-lts" var ( Cfg *rest.Config diff --git a/test/helm/helm_test.go b/test/helm/helm_test.go index 196b5a471..8fec9edbc 100644 --- a/test/helm/helm_test.go +++ b/test/helm/helm_test.go @@ -47,7 +47,7 @@ var _ = Describe("Jenkins Controller", func() { cmd := exec.Command("../../bin/helm", "upgrade", "jenkins", "../../chart/jenkins-operator", "--namespace", namespace.Name, "--debug", "--set-string", fmt.Sprintf("jenkins.namespace=%s", namespace.Name), - "--set-string", fmt.Sprintf("jenkins.image=%s", "jenkins/jenkins:2.440.1-lts"), + "--set-string", fmt.Sprintf("jenkins.image=%s", "jenkins/jenkins:2.452.1-lts"), "--set-string", fmt.Sprintf("operator.image=%s", *imageName), "--install") output, err := cmd.CombinedOutput() Expect(err).NotTo(HaveOccurred(), string(output)) From c2d5babd10b2661c7d885041bda494ba39bba83a Mon Sep 17 00:00:00 2001 From: brokenpip3 Date: Sun, 2 Jun 2024 18:12:23 +0200 Subject: [PATCH 3/7] fixup! --- pkg/configuration/user/seedjobs/seedjobs.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pkg/configuration/user/seedjobs/seedjobs.go b/pkg/configuration/user/seedjobs/seedjobs.go index 7ca60241e..64b54ffa3 100644 --- a/pkg/configuration/user/seedjobs/seedjobs.go +++ b/pkg/configuration/user/seedjobs/seedjobs.go @@ -409,10 +409,6 @@ func agentDeploymentName(jenkins v1alpha2.Jenkins, agentName string) string { } func agentDeployment(jenkins *v1alpha2.Jenkins, namespace string, agentName string, secret string, kubernetesDomainName string) (*appsv1.Deployment, error) { - jenkinsSlavesServiceFQDN, err := resources.GetJenkinsSlavesServiceFQDN(jenkins, kubernetesDomainName) - if err != nil { - return nil, err - } jenkinsHTTPServiceFQDN, err := resources.GetJenkinsHTTPServiceFQDN(jenkins, kubernetesDomainName) if err != nil { return nil, err From 384b993c22b62f9043bcbfbded04d2aa9bad7ec9 Mon Sep 17 00:00:00 2001 From: brokenpip3 Date: Sun, 2 Jun 2024 18:25:08 +0200 Subject: [PATCH 4/7] fix test and add more assert --- pkg/configuration/user/seedjobs/seedjobs_test.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/configuration/user/seedjobs/seedjobs_test.go b/pkg/configuration/user/seedjobs/seedjobs_test.go index dc2169e9c..30686749f 100644 --- a/pkg/configuration/user/seedjobs/seedjobs_test.go +++ b/pkg/configuration/user/seedjobs/seedjobs_test.go @@ -113,7 +113,9 @@ func TestEnsureSeedJobs(t *testing.T) { var agentDeployment appsv1.Deployment err = fakeClient.Get(ctx, types.NamespacedName{Namespace: jenkins.Namespace, Name: agentDeploymentName(*jenkins, AgentName)}, &agentDeployment) assert.NoError(t, err) - assert.Equal(t, "jenkins/inbound-agent:3206.vb_15dcf73f6a_9-3", agentDeployment.Spec.Template.Spec.Containers[0].Image) + assert.Equal(t, "jenkins/inbound-agent:3248.v65ecb_254c298-4", agentDeployment.Spec.Template.Spec.Containers[0].Image) + assert.Equal(t, "JENKINS_WEB_SOCKET", agentDeployment.Spec.Template.Spec.Containers[0].Env[0].Name) + assert.Equal(t, "true", agentDeployment.Spec.Template.Spec.Containers[0].Env[0].Value) }) t.Run("delete agent deployment when no seed jobs", func(t *testing.T) { From 53461a266330e20f89e428c6f3a9b7ac4346f9ea Mon Sep 17 00:00:00 2001 From: brokenpip3 Date: Sun, 2 Jun 2024 18:31:46 +0200 Subject: [PATCH 5/7] ignore docs since it will be removed soon --- .github/workflows/auto-codespell.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/auto-codespell.yml b/.github/workflows/auto-codespell.yml index b48311c63..a5e517ca2 100644 --- a/.github/workflows/auto-codespell.yml +++ b/.github/workflows/auto-codespell.yml @@ -17,8 +17,8 @@ jobs: uses: codespell-project/actions-codespell@v2 with: check_filenames: true - ignore_words_list: aks,ags,startin - skip: "*.js,package-lock.json,*.lock,*/Font-Awesome/*,*.toml,*.svg,*assets/vendor/bootstrap*,cert-manager.crds.yaml" + ignore_words_list: aks,ags,startin,NotIn + skip: "*.js,package-lock.json,*.lock,*/Font-Awesome/*,*.toml,*.svg,*assets/vendor/bootstrap*,cert-manager.crds.yaml,docs/*" pre-commit: name: PreCommit runs-on: ubuntu-latest From cd67bb743ea1d990bcfd8dc66da679bbab534314 Mon Sep 17 00:00:00 2001 From: brokenpip3 Date: Sun, 2 Jun 2024 19:26:33 +0200 Subject: [PATCH 6/7] fixup! --- .github/workflows/auto-codespell.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-codespell.yml b/.github/workflows/auto-codespell.yml index a5e517ca2..f912de2f7 100644 --- a/.github/workflows/auto-codespell.yml +++ b/.github/workflows/auto-codespell.yml @@ -18,7 +18,7 @@ jobs: with: check_filenames: true ignore_words_list: aks,ags,startin,NotIn - skip: "*.js,package-lock.json,*.lock,*/Font-Awesome/*,*.toml,*.svg,*assets/vendor/bootstrap*,cert-manager.crds.yaml,docs/*" + skip: "*.js,package-lock.json,*.lock,*/Font-Awesome/*,*.toml,*.svg,*assets/vendor/bootstrap*,cert-manager.crds.yaml,*/docs/*" pre-commit: name: PreCommit runs-on: ubuntu-latest From db19ca8175697acb347596b19714c919a705230c Mon Sep 17 00:00:00 2001 From: brokenpip3 Date: Sun, 2 Jun 2024 23:14:46 +0200 Subject: [PATCH 7/7] add seed jobs tests --- test/bats/1-deploy.bats | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/test/bats/1-deploy.bats b/test/bats/1-deploy.bats index 0dcb70b62..2155f1ac7 100644 --- a/test/bats/1-deploy.bats +++ b/test/bats/1-deploy.bats @@ -35,6 +35,12 @@ diag() { --set jenkins.latestPlugins=true \ --set jenkins.image="jenkins/jenkins:2.452.1-lts" \ --set jenkins.backup.makeBackupBeforePodDeletion=false \ + --set jenkins.seedJobs[0].id=seed-job \ + --set jenkins.seedJobs[0].targets="cicd/jobs/*.jenkins" \ + --set jenkins.seedJobs[0].description="jobs-from-operator-repo" \ + --set jenkins.seedJobs[0].repositoryBranch=master \ + --set jenkins.seedJobs[0].repositoryUrl=https://github.com/jenkinsci/kubernetes-operator \ + --set jenkins.seedJobs[0].buildPeriodically="10 * * * *" \ jenkins-operator/jenkins-operator --version=$(cat VERSION.txt | sed 's/v//') assert_success assert ${HELM} status default @@ -118,7 +124,25 @@ diag() { } #bats test_tags=phase:helm,scenario:vanilla -@test "1.10 Helm: upgrade from main branch same values" { +@test "1.10 Helm: check Jenkins seed job status and logs" { + [[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly" + run verify "there is 1 deployment named 'seed-job-agent-jenkins'" + assert_success + + run verify "there is 1 pod named 'seed-job-agent-jenkins-'" + assert_success + + run try "at most 20 times every 10s to get pods named 'seed-job-agent-jenkins-' and verify that '.status.containerStatuses[?(@.name==\"jnlp\")].ready' is 'true'" + assert_success + + run ${KUBECTL} logs -l app=seed-job-agent-selector + assert_success + assert_output --partial 'INFO: Connected' + +} + +#bats test_tags=phase:helm,scenario:vanilla +@test "1.11 Helm: upgrade from main branch same values" { run echo ${DETIK_CLIENT_NAMESPACE} run echo ${OPERATOR_IMAGE} run ${HELM} upgrade default \ @@ -134,7 +158,7 @@ diag() { } #bats test_tags=phase:helm,scenario:vanilla -@test "1.11 Helm: check Jenkins operator pods status again" { +@test "1.12 Helm: check Jenkins operator pods status again" { [[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly" run verify "there is 1 deployment named 'default-jenkins-operator'" assert_success @@ -147,7 +171,7 @@ diag() { } #bats test_tags=phase:helm,scenario:vanilla -@test "1.12 Helm: check Jenkins operator pods status" { +@test "1.13 Helm: check Jenkins operator pods status" { [[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly" run verify "there is 1 deployment named 'default-jenkins-operator'" assert_success @@ -160,7 +184,7 @@ diag() { } #bats test_tags=phase:helm,scenario:vanilla -@test "1.13 Helm: check Jenkins Pod status" { +@test "1.14 Helm: check Jenkins Pod status" { [[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly" run try "at most 20 times every 10s to get pods named 'jenkins-jenkins' and verify that '.status.containerStatuses[?(@.name==\"jenkins-master\")].ready' is 'true'" assert_success @@ -170,7 +194,7 @@ diag() { } #bats test_tags=phase:helm,scenario:vanilla -@test "1.14 Helm: clean" { +@test "1.15 Helm: clean" { run ${HELM} uninstall default assert_success # Wait for the complete removal