| 
									
										
										
										
											2020-09-02 06:12:10 +08:00
										 |  |  | /* | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *  Licensed to the Apache Software Foundation (ASF) under one or more | 
					
						
							|  |  |  |  *  contributor license agreements.  See the NOTICE file distributed with | 
					
						
							|  |  |  |  *  this work for additional information regarding copyright ownership. | 
					
						
							|  |  |  |  *  The ASF licenses this file to You under the Apache License, Version 2.0 | 
					
						
							|  |  |  |  *  (the "License"); you may not use this file except in compliance with | 
					
						
							|  |  |  |  *  the License.  You may obtain a copy of the License at | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *      http://www.apache.org/licenses/LICENSE-2.0 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *  Unless required by applicable law or agreed to in writing, software | 
					
						
							|  |  |  |  *  distributed under the License is distributed on an "AS IS" BASIS, | 
					
						
							|  |  |  |  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
					
						
							|  |  |  |  *  See the License for the specific language governing permissions and | 
					
						
							|  |  |  |  *  limitations under the License. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def doValidation() { | 
					
						
							| 
									
										
										
										
											2021-04-05 23:42:04 +08:00
										 |  |  |   sh """ | 
					
						
							| 
									
										
										
										
											2020-09-02 06:12:10 +08:00
										 |  |  |     ./gradlew -PscalaVersion=$SCALA_VERSION clean compileJava compileScala compileTestJava compileTestScala \ | 
					
						
							|  |  |  |         spotlessScalaCheck checkstyleMain checkstyleTest spotbugsMain rat \ | 
					
						
							|  |  |  |         --profile --no-daemon --continue -PxmlSpotBugsReport=true | 
					
						
							| 
									
										
										
										
											2021-04-05 23:42:04 +08:00
										 |  |  |   """ | 
					
						
							| 
									
										
										
										
											2020-09-02 06:12:10 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-05 23:42:04 +08:00
										 |  |  | def isChangeRequest(env) { | 
					
						
							|  |  |  |   env.CHANGE_ID != null && !env.CHANGE_ID.isEmpty() | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def retryFlagsString(env) { | 
					
						
							|  |  |  |     if (isChangeRequest(env)) " -PmaxTestRetries=1 -PmaxTestRetryFailures=5" | 
					
						
							|  |  |  |     else "" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def doTest(env, target = "unitTest integrationTest") { | 
					
						
							|  |  |  |   sh """./gradlew -PscalaVersion=$SCALA_VERSION ${target} \ | 
					
						
							|  |  |  |       --profile --no-daemon --continue -PtestLoggingEvents=started,passed,skipped,failed \ | 
					
						
							|  |  |  |       -PignoreFailures=true -PmaxParallelForks=2""" + retryFlagsString(env) | 
					
						
							| 
									
										
										
										
											2020-09-02 06:12:10 +08:00
										 |  |  |   junit '**/build/test-results/**/TEST-*.xml' | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def doStreamsArchetype() { | 
					
						
							|  |  |  |   echo 'Verify that Kafka Streams archetype compiles' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   sh ''' | 
					
						
							| 
									
										
										
										
											2021-03-05 03:22:22 +08:00
										 |  |  |     ./gradlew streams:publishToMavenLocal clients:publishToMavenLocal connect:json:publishToMavenLocal connect:api:publishToMavenLocal \ | 
					
						
							|  |  |  |          || { echo 'Could not publish kafka-streams.jar (and dependencies) locally to Maven'; exit 1; } | 
					
						
							| 
									
										
										
										
											2020-09-02 06:12:10 +08:00
										 |  |  |   ''' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-15 08:23:58 +08:00
										 |  |  |   VERSION = sh(script: 'grep "^version=" gradle.properties | cut -d= -f 2', returnStdout: true).trim() | 
					
						
							| 
									
										
										
										
											2020-09-02 06:12:10 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   dir('streams/quickstart') { | 
					
						
							|  |  |  |     sh ''' | 
					
						
							|  |  |  |       mvn clean install -Dgpg.skip  \ | 
					
						
							|  |  |  |           || { echo 'Could not `mvn install` streams quickstart archetype'; exit 1; } | 
					
						
							|  |  |  |     ''' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-15 08:23:58 +08:00
										 |  |  |     dir('test-streams-archetype') { | 
					
						
							|  |  |  |       // Note the double quotes for variable interpolation | 
					
						
							|  |  |  |       sh """  | 
					
						
							|  |  |  |         echo "Y" | mvn archetype:generate \ | 
					
						
							|  |  |  |             -DarchetypeCatalog=local \ | 
					
						
							|  |  |  |             -DarchetypeGroupId=org.apache.kafka \ | 
					
						
							|  |  |  |             -DarchetypeArtifactId=streams-quickstart-java \ | 
					
						
							|  |  |  |             -DarchetypeVersion=${VERSION} \ | 
					
						
							|  |  |  |             -DgroupId=streams.examples \ | 
					
						
							|  |  |  |             -DartifactId=streams.examples \ | 
					
						
							|  |  |  |             -Dversion=0.1 \ | 
					
						
							|  |  |  |             -Dpackage=myapps \ | 
					
						
							|  |  |  |             || { echo 'Could not create new project using streams quickstart archetype'; exit 1; } | 
					
						
							|  |  |  |       """ | 
					
						
							| 
									
										
										
										
											2020-09-02 06:12:10 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-15 08:23:58 +08:00
										 |  |  |       dir('streams.examples') { | 
					
						
							|  |  |  |         sh ''' | 
					
						
							|  |  |  |           mvn compile \ | 
					
						
							|  |  |  |               || { echo 'Could not compile streams quickstart archetype project'; exit 1; } | 
					
						
							|  |  |  |         ''' | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2020-09-02 06:12:10 +08:00
										 |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def tryStreamsArchetype() { | 
					
						
							|  |  |  |   try { | 
					
						
							|  |  |  |     doStreamsArchetype() | 
					
						
							|  |  |  |   } catch(err) { | 
					
						
							|  |  |  |     echo 'Failed to build Kafka Streams archetype, marking this build UNSTABLE' | 
					
						
							|  |  |  |     currentBuild.result = 'UNSTABLE' | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | pipeline { | 
					
						
							|  |  |  |   agent none | 
					
						
							| 
									
										
										
										
											2021-04-05 23:42:04 +08:00
										 |  |  |    | 
					
						
							|  |  |  |   options { | 
					
						
							|  |  |  |     disableConcurrentBuilds() | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |    | 
					
						
							| 
									
										
										
										
											2020-09-02 06:12:10 +08:00
										 |  |  |   stages { | 
					
						
							|  |  |  |     stage('Build') { | 
					
						
							|  |  |  |       parallel { | 
					
						
							| 
									
										
										
										
											2021-04-05 23:42:04 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         stage('JDK 8 and Scala 2.12') { | 
					
						
							| 
									
										
										
										
											2020-09-02 06:12:10 +08:00
										 |  |  |           agent { label 'ubuntu' } | 
					
						
							|  |  |  |           tools { | 
					
						
							| 
									
										
										
										
											2020-10-20 00:54:47 +08:00
										 |  |  |             jdk 'jdk_1.8_latest' | 
					
						
							|  |  |  |             maven 'maven_3_latest' | 
					
						
							| 
									
										
										
										
											2020-09-02 06:12:10 +08:00
										 |  |  |           } | 
					
						
							|  |  |  |           options { | 
					
						
							|  |  |  |             timeout(time: 8, unit: 'HOURS')  | 
					
						
							|  |  |  |             timestamps() | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           environment { | 
					
						
							|  |  |  |             SCALA_VERSION=2.12 | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           steps { | 
					
						
							|  |  |  |             doValidation() | 
					
						
							| 
									
										
										
										
											2021-04-05 23:42:04 +08:00
										 |  |  |             doTest(env) | 
					
						
							| 
									
										
										
										
											2020-09-02 06:12:10 +08:00
										 |  |  |             tryStreamsArchetype() | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-05 23:42:04 +08:00
										 |  |  |         stage('JDK 11 and Scala 2.13') { | 
					
						
							| 
									
										
										
										
											2020-09-02 06:12:10 +08:00
										 |  |  |           agent { label 'ubuntu' } | 
					
						
							|  |  |  |           tools { | 
					
						
							| 
									
										
										
										
											2020-10-20 00:54:47 +08:00
										 |  |  |             jdk 'jdk_11_latest' | 
					
						
							| 
									
										
										
										
											2020-09-02 06:12:10 +08:00
										 |  |  |           } | 
					
						
							|  |  |  |           options { | 
					
						
							|  |  |  |             timeout(time: 8, unit: 'HOURS')  | 
					
						
							|  |  |  |             timestamps() | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           environment { | 
					
						
							|  |  |  |             SCALA_VERSION=2.13 | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           steps { | 
					
						
							|  |  |  |             doValidation() | 
					
						
							| 
									
										
										
										
											2021-04-05 23:42:04 +08:00
										 |  |  |             doTest(env) | 
					
						
							| 
									
										
										
										
											2020-09-02 06:12:10 +08:00
										 |  |  |             echo 'Skipping Kafka Streams archetype test for Java 11' | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-04-05 23:42:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-06 23:55:52 +08:00
										 |  |  |         stage('JDK 17 and Scala 2.13') { | 
					
						
							| 
									
										
										
										
											2021-06-13 23:14:37 +08:00
										 |  |  |           agent { label 'ubuntu' } | 
					
						
							|  |  |  |           tools { | 
					
						
							| 
									
										
										
										
											2021-09-06 23:55:52 +08:00
										 |  |  |             jdk 'jdk_17_latest' | 
					
						
							| 
									
										
										
										
											2021-06-13 23:14:37 +08:00
										 |  |  |           } | 
					
						
							|  |  |  |           options { | 
					
						
							|  |  |  |             timeout(time: 8, unit: 'HOURS')  | 
					
						
							|  |  |  |             timestamps() | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           environment { | 
					
						
							|  |  |  |             SCALA_VERSION=2.13 | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           steps { | 
					
						
							|  |  |  |             doValidation() | 
					
						
							|  |  |  |             doTest(env) | 
					
						
							| 
									
										
										
										
											2021-09-06 23:55:52 +08:00
										 |  |  |             echo 'Skipping Kafka Streams archetype test for Java 17' | 
					
						
							| 
									
										
										
										
											2021-06-13 23:14:37 +08:00
										 |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-04 04:57:27 +08:00
										 |  |  |         stage('ARM') { | 
					
						
							|  |  |  |           agent { label 'arm4' } | 
					
						
							|  |  |  |           options { | 
					
						
							|  |  |  |             timeout(time: 2, unit: 'HOURS')  | 
					
						
							|  |  |  |             timestamps() | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           environment { | 
					
						
							|  |  |  |             SCALA_VERSION=2.12 | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           steps { | 
					
						
							|  |  |  |             doValidation() | 
					
						
							|  |  |  |             catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { | 
					
						
							| 
									
										
										
										
											2021-04-05 23:42:04 +08:00
										 |  |  |               doTest(env, 'unitTest') | 
					
						
							| 
									
										
										
										
											2021-03-04 04:57:27 +08:00
										 |  |  |             } | 
					
						
							|  |  |  |             echo 'Skipping Kafka Streams archetype test for ARM build' | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-04-05 23:42:04 +08:00
										 |  |  |          | 
					
						
							|  |  |  |         // To avoid excessive Jenkins resource usage, we only run the stages | 
					
						
							|  |  |  |         // above at the PR stage. The ones below are executed after changes | 
					
						
							|  |  |  |         // are pushed to trunk and/or release branches. We achieve this via | 
					
						
							|  |  |  |         // the `when` clause. | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         stage('JDK 8 and Scala 2.13') { | 
					
						
							|  |  |  |           when { | 
					
						
							|  |  |  |             not { changeRequest() } | 
					
						
							|  |  |  |             beforeAgent true | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           agent { label 'ubuntu' } | 
					
						
							|  |  |  |           tools { | 
					
						
							|  |  |  |             jdk 'jdk_1.8_latest' | 
					
						
							|  |  |  |             maven 'maven_3_latest' | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           options { | 
					
						
							|  |  |  |             timeout(time: 8, unit: 'HOURS')  | 
					
						
							|  |  |  |             timestamps() | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           environment { | 
					
						
							|  |  |  |             SCALA_VERSION=2.13 | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           steps { | 
					
						
							|  |  |  |             doValidation() | 
					
						
							|  |  |  |             doTest(env) | 
					
						
							|  |  |  |             tryStreamsArchetype() | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         stage('JDK 11 and Scala 2.12') { | 
					
						
							|  |  |  |           when { | 
					
						
							|  |  |  |             not { changeRequest() } | 
					
						
							|  |  |  |             beforeAgent true | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           agent { label 'ubuntu' } | 
					
						
							|  |  |  |           tools { | 
					
						
							|  |  |  |             jdk 'jdk_11_latest' | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           options { | 
					
						
							|  |  |  |             timeout(time: 8, unit: 'HOURS')  | 
					
						
							|  |  |  |             timestamps() | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           environment { | 
					
						
							|  |  |  |             SCALA_VERSION=2.12 | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           steps { | 
					
						
							|  |  |  |             doValidation() | 
					
						
							|  |  |  |             doTest(env) | 
					
						
							|  |  |  |             echo 'Skipping Kafka Streams archetype test for Java 11' | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-06 23:55:52 +08:00
										 |  |  |         stage('JDK 17 and Scala 2.12') { | 
					
						
							| 
									
										
										
										
											2021-04-05 23:42:04 +08:00
										 |  |  |           when { | 
					
						
							|  |  |  |             not { changeRequest() } | 
					
						
							|  |  |  |             beforeAgent true | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           agent { label 'ubuntu' } | 
					
						
							|  |  |  |           tools { | 
					
						
							| 
									
										
										
										
											2021-09-06 23:55:52 +08:00
										 |  |  |             jdk 'jdk_17_latest' | 
					
						
							| 
									
										
										
										
											2021-04-05 23:42:04 +08:00
										 |  |  |           } | 
					
						
							|  |  |  |           options { | 
					
						
							|  |  |  |             timeout(time: 8, unit: 'HOURS')  | 
					
						
							|  |  |  |             timestamps() | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           environment { | 
					
						
							|  |  |  |             SCALA_VERSION=2.12 | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           steps { | 
					
						
							|  |  |  |             doValidation() | 
					
						
							|  |  |  |             doTest(env) | 
					
						
							| 
									
										
										
										
											2021-09-06 23:55:52 +08:00
										 |  |  |             echo 'Skipping Kafka Streams archetype test for Java 17' | 
					
						
							| 
									
										
										
										
											2021-04-05 23:42:04 +08:00
										 |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |    | 
					
						
							|  |  |  |   post { | 
					
						
							|  |  |  |     always { | 
					
						
							| 
									
										
										
										
											2021-04-06 13:20:23 +08:00
										 |  |  |       node('ubuntu') { | 
					
						
							|  |  |  |         script { | 
					
						
							|  |  |  |           if (!isChangeRequest(env)) { | 
					
						
							|  |  |  |             step([$class: 'Mailer', | 
					
						
							|  |  |  |                  notifyEveryUnstableBuild: true, | 
					
						
							|  |  |  |                  recipients: "dev@kafka.apache.org", | 
					
						
							|  |  |  |                  sendToIndividuals: false]) | 
					
						
							|  |  |  |           } | 
					
						
							| 
									
										
										
										
											2021-04-05 23:42:04 +08:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2020-09-02 06:12:10 +08:00
										 |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |