Merge branch 'master' into skip_plugins
This commit is contained in:
		
						commit
						38d7b88211
					
				|  | @ -1,40 +0,0 @@ | |||
| name: CI Lint | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - master | ||||
|       - main | ||||
|   pull_request: | ||||
|     types: [opened, synchronize, ready_for_review, reopened] | ||||
| jobs: | ||||
|   codespell: | ||||
|     name: Codespell | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Codespell | ||||
|       uses: codespell-project/actions-codespell@v2 | ||||
|       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/*" | ||||
|   pre-commit: | ||||
|     name: PreCommit | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/setup-python@v5.1.1 | ||||
|     - uses: DeterminateSystems/nix-installer-action@v13 | ||||
|       with: | ||||
|         diagnostic-endpoint: "" | ||||
|     - uses: DeterminateSystems/magic-nix-cache-action@v7 | ||||
|       with: | ||||
|         diagnostic-endpoint: "" | ||||
|     - name: Checkout | ||||
|       uses: actions/checkout@v4 | ||||
|     - id: files | ||||
|       uses: tj-actions/changed-files@v44 | ||||
|     - name: nix checks | ||||
|       run: nix flake check | ||||
|     - name: nix pre-commit | ||||
|       run: nix develop . --command pre-commit run --files ${{ steps.files.outputs.all_changed_files }} --show-diff-on-failure | ||||
|  | @ -311,6 +311,7 @@ type JenkinsMaster struct { | |||
| 	//     periodSeconds: 10
 | ||||
| 	//     successThreshold: 1
 | ||||
| 	//     timeoutSeconds: 5
 | ||||
| 	//   lifecycle: {}
 | ||||
| 	//   name: jenkins-master
 | ||||
| 	//   readinessProbe:
 | ||||
| 	//     failureThreshold: 3
 | ||||
|  |  | |||
|  | @ -134,6 +134,9 @@ spec: | |||
|         {{- with .Values.jenkins.env }} | ||||
|         env: {{- toYaml . | nindent 8 }} | ||||
|         {{- end }} | ||||
|         {{- with .Values.jenkins.lifecycle}} | ||||
|         lifecycle: {{ toYaml . | nindent 10 }} | ||||
|         {{- end }} | ||||
|         {{- with .Values.jenkins.volumeMounts }} | ||||
|         volumeMounts: {{- toYaml . | nindent 8 }} | ||||
|         {{- end }} | ||||
|  |  | |||
|  | @ -44,6 +44,9 @@ jenkins: | |||
|   # imagePullPolicy defines policy for pulling images | ||||
|   imagePullPolicy: Always | ||||
| 
 | ||||
|   # lifecycle is used if you want to specify lifecycle hooks for the master container | ||||
|   lifecycle: {} | ||||
| 
 | ||||
|   # priorityClassName indicates the importance of a Pod relative to other Pods | ||||
|   # See: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ | ||||
|   priorityClassName: "" | ||||
|  |  | |||
|  | @ -378,6 +378,11 @@ func (r *JenkinsReconciler) setDefaults(jenkins *v1alpha2.Jenkins) (requeue bool | |||
| 		changed = true | ||||
| 		jenkinsContainer.LivenessProbe = resources.NewProbe(containerProbeURI, containerProbePortName, corev1.URISchemeHTTP, 80, 5, 12) | ||||
| 	} | ||||
| 	if jenkinsContainer.Lifecycle == nil { | ||||
| 		logger.Info("Setting default Jenkins lifecycle") | ||||
| 		changed = true | ||||
| 		jenkinsContainer.Lifecycle = &corev1.Lifecycle{} | ||||
| 	} | ||||
| 	if len(jenkinsContainer.Command) == 0 { | ||||
| 		logger.Info("Setting default Jenkins container command") | ||||
| 		changed = true | ||||
|  |  | |||
|  | @ -243,6 +243,7 @@ func NewJenkinsMasterContainer(jenkins *v1alpha2.Jenkins) corev1.Container { | |||
| 		Image:           jenkinsContainer.Image, | ||||
| 		ImagePullPolicy: jenkinsContainer.ImagePullPolicy, | ||||
| 		Command:         jenkinsContainer.Command, | ||||
| 		Lifecycle:       jenkinsContainer.Lifecycle, | ||||
| 		LivenessProbe:   jenkinsContainer.LivenessProbe, | ||||
| 		ReadinessProbe:  jenkinsContainer.ReadinessProbe, | ||||
| 		Ports: []corev1.ContainerPort{ | ||||
|  |  | |||
|  | @ -105,6 +105,7 @@ setup() { | |||
|     --set jenkins.nodeSelector.batstest=yep \ | ||||
|     --set jenkins.image="jenkins/jenkins:2.462.3-lts" \ | ||||
|     --set jenkins.imagePullPolicy="IfNotPresent" \ | ||||
|     --set jenkins.lifecycle.preStop.exec.command="{echo bats-test}" \ | ||||
|     --set jenkins.backup.makeBackupBeforePodDeletion=false \ | ||||
|     --set jenkins.backup.image=quay.io/jenkins-kubernetes-operator/backup-pvc:e2e-test \ | ||||
|     chart/jenkins-operator --wait | ||||
|  | @ -138,7 +139,15 @@ setup() { | |||
| } | ||||
| 
 | ||||
| #bats test_tags=phase:helm,scenario:more-options | ||||
| @test "2.12 Helm: check node selector again" { | ||||
| @test "2.12  Helm: check lifecycle hook injection" { | ||||
|   [[ ! -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 '.spec.containers[?(@.name==\"jenkins-master\")].lifecycle.preStop.exec.command[0]' is 'echo bats-test'" | ||||
|   assert_success | ||||
| } | ||||
| 
 | ||||
| #bats test_tags=phase:helm,scenario:more-options | ||||
| @test "2.13 Helm: check node selector again" { | ||||
|   [[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly" | ||||
| 
 | ||||
|   NODENAME=$(${KUBECTL} get pod jenkins-jenkins -o jsonpath={.spec.nodeName}) | ||||
|  | @ -149,17 +158,32 @@ setup() { | |||
| } | ||||
| 
 | ||||
| #bats test_tags=phase:helm,scenario:more-options | ||||
| @test "2.13 Helm: check jenkins-plugin-cli command again" { | ||||
| @test "2.14 Helm: check jenkins-plugin-cli command again" { | ||||
|   [[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly" | ||||
| 
 | ||||
|   run ${KUBECTL} logs -c jenkins-master jenkins-jenkins | ||||
|   # Check logs for jenkins-plugin-cli command with retry. | ||||
|   # Retry is necessary here to reduce flakiness due to additional delays | ||||
|   # from reconciling and recreating jenkins pods after helm upgrade. | ||||
|   # We assert success only after the retry loop to reduce noise. | ||||
|   LOG_CMD="${KUBECTL} logs -c jenkins-master jenkins-jenkins" | ||||
| 
 | ||||
|   EXPECTED_LOG_LINE_BASE_PLUGINS="jenkins-plugin-cli --verbose --latest true -f /var/lib/jenkins/base-plugins.txt" | ||||
|   retry 10 10 "${LOG_CMD} | grep -e '${EXPECTED_LOG_LINE_BASE_PLUGINS}'" | ||||
| 
 | ||||
|   run $LOG_CMD | ||||
|   assert_success | ||||
|   assert_output --partial 'jenkins-plugin-cli --verbose --latest true -f /var/lib/jenkins/base-plugins.txt' | ||||
|   assert_output --partial 'jenkins-plugin-cli --verbose --latest true -f /var/lib/jenkins/user-plugins.txt' | ||||
|   assert_output --partial "${EXPECTED_LOG_LINE_BASE_PLUGINS}" | ||||
| 
 | ||||
|   EXPECTED_LOG_LINE_USER_PLUGINS="jenkins-plugin-cli --verbose --latest true -f /var/lib/jenkins/user-plugins.txt" | ||||
|   retry 10 10 "${LOG_CMD} | grep -e '${EXPECTED_LOG_LINE_USER_PLUGINS}'" | ||||
| 
 | ||||
|   run $LOG_CMD | ||||
|   assert_success | ||||
|   assert_output --partial "${EXPECTED_LOG_LINE_USER_PLUGINS}" | ||||
| } | ||||
| 
 | ||||
| #bats test_tags=phase:helm,scenario:more-options | ||||
| @test "2.14 Helm: clean" { | ||||
| @test "2.15 Helm: clean" { | ||||
|   [[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly" | ||||
| 
 | ||||
|   run ${HELM} uninstall options --wait | ||||
|  |  | |||
|  | @ -15,3 +15,36 @@ _common_setup() { | |||
| get_latest_chart_version() { | ||||
|     helm search repo jenkins-operator/jenkins --versions | awk 'NR==2 {print $2}' | sed 's/v//' | ||||
| } | ||||
| 
 | ||||
| retry() { | ||||
|     # based on bats-detik's try function | ||||
| 
 | ||||
|     if [[ $# -ne 3 ]]; then | ||||
|         echo "[ERROR] Usage: retry <times> <delay> <command>" | ||||
|         return 1 | ||||
|     fi | ||||
| 
 | ||||
|     local times="$1" | ||||
|     local delay="$2" | ||||
|     local cmd="$3" | ||||
| 
 | ||||
|     code=0 | ||||
|     for ((i=1; i<=times; i++)); do | ||||
| 
 | ||||
|         # Run the command | ||||
|         eval "$cmd" && code=$? || code=$? | ||||
| 
 | ||||
|         # Break the loop prematurely? | ||||
|         if [[ "$code" == "0" ]]; then | ||||
|             break | ||||
|         elif [[ "$i" != "1" ]]; then | ||||
|             code=3 | ||||
|             sleep "$delay" | ||||
|         else | ||||
|             code=3 | ||||
|         fi | ||||
|     done | ||||
| 
 | ||||
|     ## Error code | ||||
|     return $code | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue