From e0f52b5bdf02104b31ec1627143032510803622a Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Sat, 22 Jun 2024 16:27:38 +0200 Subject: [PATCH] chore(operator): update jenkins latest img and plugins, use latest backup in bats tests (#1022) --- Makefile | 10 ++-------- chart/jenkins-operator/README.md | 2 +- chart/jenkins-operator/values.yaml | 6 +++--- config.base.env | 2 +- pkg/configuration/user/seedjobs/seedjobs.go | 2 +- pkg/configuration/user/seedjobs/seedjobs_test.go | 2 +- pkg/constants/constants.go | 2 +- pkg/plugins/base_plugins.go | 2 +- test/bats/1-deploy.bats | 14 +++++++++----- test/bats/2-deploy-with-more-options.bats | 6 ++++-- test/bats/3-deploy-with-webhook.bats | 10 ++++++---- test/e2e/configuration_test.go | 2 +- test/e2e/test_utility.go | 2 +- test/helm/helm_test.go | 2 +- 14 files changed, 33 insertions(+), 31 deletions(-) diff --git a/Makefile b/Makefile index bdd8d4e37..e4ef73b29 100644 --- a/Makefile +++ b/Makefile @@ -377,22 +377,16 @@ kind-clean: ## Delete kind cluster @echo "+ $@" kind delete cluster --name $(KIND_CLUSTER_NAME) -.PHONY: kind-load-backup -kind-load-backup: - @echo "+ $@" - make -C - kind delete cluster --name $(KIND_CLUSTER_NAME) - .PHONY: bats-tests IMAGE_NAME := quay.io/$(QUAY_ORGANIZATION)/$(QUAY_REGISTRY):$(GITCOMMIT)-amd64 BUILD_PRESENT := $(shell docker images |grep -q ${IMAGE_NAME}) ifndef BUILD_PRESENT -bats-tests: container-runtime-build-amd64 ## Run bats tests +bats-tests: backup-kind-load container-runtime-build-amd64 ## Run bats tests @echo "+ $@" kind load docker-image ${IMAGE_NAME} --name $(KIND_CLUSTER_NAME) OPERATOR_IMAGE="${IMAGE_NAME}" TERM=xterm bats -T -p test/bats else -bats-tests: ## Run bats tests +bats-tests: backup-kind-load @echo "+ $@" OPERATOR_IMAGE="${IMAGE_NAME}" TERM=xterm bats -T -p test/bats endif diff --git a/chart/jenkins-operator/README.md b/chart/jenkins-operator/README.md index 4ce0beb71..2c2b2fc11 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.452.1-lts"` | | +| jenkins.image | string | `"jenkins/jenkins:2.452.2-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 f2eba788a..cc878194b 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.452.1-lts + image: jenkins/jenkins:2.452.2-lts # env contains jenkins container environment variables env: [] @@ -94,7 +94,7 @@ jenkins: # # basePlugins: # - name: kubernetes - # version: 4238.v41b_3ef14a_5d8 + # version: 4246.v5a_12b_1fe120e # - name: workflow-job # version: 1400.v7fd111b_ec82f # - name: workflow-aggregator @@ -139,7 +139,7 @@ jenkins: # repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git seedJobs: [] - # SeedJobAgentImage defines the image that will be used by the seed job agent. If not defined jenkins/inbound-agent:3206.vb_15dcf73f6a_9-3 will be used. + # SeedJobAgentImage defines the image that will be used by the seed job agent. If not defined jenkins/inbound-agent:3248.v65ecb_254c298-6 will be used. seedJobAgentImage: "" # Resource limit/request for Jenkins diff --git a/config.base.env b/config.base.env index 5d6787d17..f535e8bb4 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.452.1" +LATEST_LTS_VERSION="2.452.2" NAME="kubernetes-operator" NAMESPACE="default" OPERATOR_SDK_VERSION="1.3.0" diff --git a/pkg/configuration/user/seedjobs/seedjobs.go b/pkg/configuration/user/seedjobs/seedjobs.go index 64b54ffa3..d6b0f5981 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:3248.v65ecb_254c298-4" + defaultAgentImage = "jenkins/inbound-agent:3248.v65ecb_254c298-6" creatingGroovyScriptName = "seed-job-groovy-script.groovy" diff --git a/pkg/configuration/user/seedjobs/seedjobs_test.go b/pkg/configuration/user/seedjobs/seedjobs_test.go index 30686749f..ff517bf17 100644 --- a/pkg/configuration/user/seedjobs/seedjobs_test.go +++ b/pkg/configuration/user/seedjobs/seedjobs_test.go @@ -113,7 +113,7 @@ 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:3248.v65ecb_254c298-4", agentDeployment.Spec.Template.Spec.Containers[0].Image) + assert.Equal(t, "jenkins/inbound-agent:3248.v65ecb_254c298-6", 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) }) diff --git a/pkg/constants/constants.go b/pkg/constants/constants.go index 7e26f4115..e43f87c03 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.452.1-lts" + DefaultJenkinsMasterImage = "jenkins/jenkins:2.452.2-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 8f35410fe..48982e027 100644 --- a/pkg/plugins/base_plugins.go +++ b/pkg/plugins/base_plugins.go @@ -4,7 +4,7 @@ const ( configurationAsCodePlugin = "configuration-as-code:1810.v9b_c30a_249a_4c" gitPlugin = "git:5.2.2" jobDslPlugin = "job-dsl:1.87" - kubernetesPlugin = "kubernetes:4238.v41b_3ef14a_5d8" + kubernetesPlugin = "kubernetes:4246.v5a_12b_1fe120e" kubernetesCredentialsProviderPlugin = "kubernetes-credentials-provider:1.262.v2670ef7ea_0c5" workflowAggregatorPlugin = "workflow-aggregator:596.v8c21c963d92d" workflowJobPlugin = "workflow-job:1400.v7fd111b_ec82f" diff --git a/test/bats/1-deploy.bats b/test/bats/1-deploy.bats index 2155f1ac7..5a6e6d383 100644 --- a/test/bats/1-deploy.bats +++ b/test/bats/1-deploy.bats @@ -33,8 +33,9 @@ diag() { --set namespace=${DETIK_CLIENT_NAMESPACE} \ --set operator.image=${OPERATOR_IMAGE} \ --set jenkins.latestPlugins=true \ - --set jenkins.image="jenkins/jenkins:2.452.1-lts" \ + --set jenkins.image="jenkins/jenkins:2.452.2-lts" \ --set jenkins.backup.makeBackupBeforePodDeletion=false \ + --set jenkins.backup.image=quay.io/jenkins-kubernetes-operator/backup-pvc:e2e-test \ --set jenkins.seedJobs[0].id=seed-job \ --set jenkins.seedJobs[0].targets="cicd/jobs/*.jenkins" \ --set jenkins.seedJobs[0].description="jobs-from-operator-repo" \ @@ -126,16 +127,18 @@ diag() { #bats test_tags=phase:helm,scenario:vanilla @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 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 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 + sleep 5 - run ${KUBECTL} logs -l app=seed-job-agent-selector + run ${KUBECTL} logs -l app=seed-job-agent-selector --tail=20000 assert_success assert_output --partial 'INFO: Connected' @@ -150,8 +153,9 @@ diag() { --set namespace=${DETIK_CLIENT_NAMESPACE} \ --set operator.image=${OPERATOR_IMAGE} \ --set jenkins.latestPlugins=true \ - --set jenkins.image="jenkins/jenkins:2.452.1-lts" \ + --set jenkins.image="jenkins/jenkins:2.452.2-lts" \ --set jenkins.backup.makeBackupBeforePodDeletion=false \ + --set jenkins.backup.image=quay.io/jenkins-kubernetes-operator/backup-pvc:e2e-test \ chart/jenkins-operator assert_success assert ${HELM} status default diff --git a/test/bats/2-deploy-with-more-options.bats b/test/bats/2-deploy-with-more-options.bats index d4ce27d35..c685e57ee 100644 --- a/test/bats/2-deploy-with-more-options.bats +++ b/test/bats/2-deploy-with-more-options.bats @@ -29,8 +29,9 @@ setup() { --set operator.image=${OPERATOR_IMAGE} \ --set jenkins.latestPlugins=true \ --set jenkins.nodeSelector.batstest=yep \ - --set jenkins.image="jenkins/jenkins:2.452.1-lts" \ + --set jenkins.image="jenkins/jenkins:2.452.2-lts" \ --set jenkins.backup.makeBackupBeforePodDeletion=false \ + --set jenkins.backup.image=quay.io/jenkins-kubernetes-operator/backup-pvc:e2e-test \ jenkins-operator/jenkins-operator --version=$(cat VERSION.txt | sed 's/v//') assert_success assert ${HELM} status options @@ -101,8 +102,9 @@ setup() { --set operator.image=${OPERATOR_IMAGE} \ --set jenkins.latestPlugins=true \ --set jenkins.nodeSelector.batstest=yep \ - --set jenkins.image="jenkins/jenkins:2.452.1-lts" \ + --set jenkins.image="jenkins/jenkins:2.452.2-lts" \ --set jenkins.backup.makeBackupBeforePodDeletion=false \ + --set jenkins.backup.image=quay.io/jenkins-kubernetes-operator/backup-pvc:e2e-test \ chart/jenkins-operator assert_success assert ${HELM} status options diff --git a/test/bats/3-deploy-with-webhook.bats b/test/bats/3-deploy-with-webhook.bats index c832f82fe..9e6343a89 100644 --- a/test/bats/3-deploy-with-webhook.bats +++ b/test/bats/3-deploy-with-webhook.bats @@ -29,8 +29,9 @@ setup() { --set namespace=${DETIK_CLIENT_NAMESPACE} \ --set operator.image=${OPERATOR_IMAGE} \ --set jenkins.latestPlugins=true \ - --set jenkins.image="jenkins/jenkins:2.452.1-lts" \ + --set jenkins.image="jenkins/jenkins:2.452.2-lts" \ --set jenkins.backup.makeBackupBeforePodDeletion=true \ + --set jenkins.backup.image=quay.io/jenkins-kubernetes-operator/backup-pvc:e2e-test \ --set webhook.enabled=true \ jenkins-operator/jenkins-operator --version=$(cat VERSION.txt | sed 's/v//') assert_success @@ -48,7 +49,7 @@ setup() { run verify "there is 1 pod named 'webhook-jenkins-operator-'" assert_success - run try "at most 20 times every 10s to get pods named 'webhook-jenkins-operator-' and verify that '.status.containerStatuses[?(@.name==\"jenkins-operator\")].ready' is 'true'" + run try "at most 50 times every 5s to get pod named 'webhook-jenkins-operator-' and verify that '.status.containerStatuses[?(@.name==\"jenkins-operator\")].ready' is 'true'" assert_success run ${KUBECTL} rollout restart deployment webhook-jenkins-operator @@ -59,7 +60,7 @@ setup() { @test "3.4 Helm: check Jenkins Pod status" { [[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly" - run try "at most 30 times every 10s to get pods named 'jenkins-jenkins' and verify that '.status.containerStatuses[?(@.name==\"jenkins-master\")].ready' is 'true'" + run try "at most 30 times every 10s to get pod named 'jenkins-jenkins' and verify that '.status.containerStatuses[?(@.name==\"jenkins-master\")].ready' is 'true'" assert_success } @@ -86,8 +87,9 @@ setup() { --set namespace=${DETIK_CLIENT_NAMESPACE} \ --set operator.image=${OPERATOR_IMAGE} \ --set jenkins.latestPlugins=true \ - --set jenkins.image="jenkins/jenkins:2.452.1-lts" \ + --set jenkins.image="jenkins/jenkins:2.452.2-lts" \ --set jenkins.backup.makeBackupBeforePodDeletion=true \ + --set jenkins.backup.image=quay.io/jenkins-kubernetes-operator/backup-pvc:e2e-test \ --set webhook.enabled=true \ chart/jenkins-operator assert_success diff --git a/test/e2e/configuration_test.go b/test/e2e/configuration_test.go index 4bef64e04..596c8d7e8 100644 --- a/test/e2e/configuration_test.go +++ b/test/e2e/configuration_test.go @@ -26,7 +26,7 @@ const e2e = "e2e" var expectedBasePluginsList = []plugins.Plugin{ 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:4246.v5a_12b_1fe120e")), 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")), diff --git a/test/e2e/test_utility.go b/test/e2e/test_utility.go index b3900e41e..fd0e08266 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.452.1-lts" +const JenkinsTestImage = "jenkins/jenkins:2.452.2-lts" var ( Cfg *rest.Config diff --git a/test/helm/helm_test.go b/test/helm/helm_test.go index 8fec9edbc..f9e922a50 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.452.1-lts"), + "--set-string", fmt.Sprintf("jenkins.image=%s", "jenkins/jenkins:2.452.2-lts"), "--set-string", fmt.Sprintf("operator.image=%s", *imageName), "--install") output, err := cmd.CombinedOutput() Expect(err).NotTo(HaveOccurred(), string(output))