kafka/Jenkinsfile

202 lines
5.5 KiB
Plaintext
Raw Normal View History

/*
*
* 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() {
// Run all the tasks associated with `check` except for `test` - the latter is executed via `doTest`
sh """
./retry_zinc ./gradlew -PscalaVersion=$SCALA_VERSION clean check -x test \
MINOR: Reuse gradle daemon for scala compilation by default (#12280) The time time to compile was reduced from 5.3 seconds to 0.9 seconds by changing the keep alive mode from `SESSION` to `DAEMON`. We change the default to the latter and allow the former to be set via a `keepAliveMode` property. Also update the Jenkins build to use `keepAliveMode="session"` instead of `--no-daemon`. ./gradlew compileTestScala -PkeepAliveMode="daemon" --info: > Task :streams:streams-scala:compileTestScala > Watching 928 directories to track changes > Caching disabled for task ':streams:streams-scala:compileTestScala' because: > Build cache is disabled > Task ':streams:streams-scala:compileTestScala' is not up-to-date because: > Input property 'source' file /home/ijuma/src/kafka/streams/streams-scala/src/test/scala/org/apache/kafka/streams/scala/kstream/JoinedTest.scala has changed. > Watching 920 directories to track changes > Watching 919 directories to track changes > Compiling with Zinc Scala compiler. > Prepared Zinc Scala inputs: 0.004 secs > compiling 16 Scala sources to /home/ijuma/src/kafka/streams/streams-scala/build/classes/scala/test ... > done compiling > Completed Scala compilation: 0.925 secs ./gradlew compileTestScala -PkeepAliveMode="session" --info > Task :streams:streams-scala:compileTestScala > Watching 928 directories to track changes > Caching disabled for task ':streams:streams-scala:compileTestScala' because: > Build cache is disabled > Task ':streams:streams-scala:compileTestScala' is not up-to-date because: > Input property 'source' file /home/ijuma/src/kafka/streams/streams-scala/src/test/scala/org/apache/kafka/streams/scala/kstream/JoinedTest.scala has changed. > Watching 920 directories to track changes > Watching 919 directories to track changes > Starting process 'Gradle Worker Daemon 3'. Working directory: /home/ijuma/.gradle/workers Command: /usr/java/jdk-17.0.4.1+1/bin/java -Xss4m -XX:+UseParallelGC --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.regex=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED @/home/ijuma/.gradle/.tmp/gradle-worker-classpath3305983246500958050txt -Xmx2048m -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Worker Daemon 3' > Successfully started process 'Gradle Worker Daemon 3' > Started Gradle worker daemon (0.244 secs) with fork options DaemonForkOptions{executable=/usr/java/jdk-17.0.4.1+1/bin/java, minHeapSize=null, maxHeapSize=2048m, jvmArgs=[-Xss4m, -XX:+UseParallelGC, --add-opens=java.base/java.io=ALL-UNNAMED, --add-opens=java.base/java.lang=ALL-UNNAMED, --add-opens=java.base/java.nio=ALL-UNNAMED, --add-opens=java.base/java.nio.file=ALL-UNNAMED, --add-opens=java.base/java.util=ALL-UNNAMED, --add-opens=java.base/java.util.concurrent=ALL-UNNAMED, --add-opens=java.base/java.util.regex=ALL-UNNAMED, --add-opens=java.base/java.util.stream=ALL-UNNAMED, --add-opens=java.base/java.text=ALL-UNNAMED, --add-opens=java.base/java.time=ALL-UNNAMED, --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED], keepAliveMode=SESSION}. > Compiling with Zinc Scala compiler. > Prepared Zinc Scala inputs: 0.187 secs > compiling 16 Scala sources to /home/ijuma/src/kafka/streams/streams-scala/build/classes/scala/test ... > done compiling > Completed Scala compilation: 5.307 secs See https://github.com/gradle/gradle/issues/20579 for more details. Reviewers: Manikumar Reddy <manikumar.reddy@gmail.com>
2022-12-01 21:33:43 +08:00
--profile --continue -PxmlSpotBugsReport=true -PkeepAliveMode="session"
"""
}
def isChangeRequest(env) {
env.CHANGE_ID != null && !env.CHANGE_ID.isEmpty()
}
def doTest(env, target = "test") {
sh """./gradlew -PscalaVersion=$SCALA_VERSION ${target} \
MINOR: Reuse gradle daemon for scala compilation by default (#12280) The time time to compile was reduced from 5.3 seconds to 0.9 seconds by changing the keep alive mode from `SESSION` to `DAEMON`. We change the default to the latter and allow the former to be set via a `keepAliveMode` property. Also update the Jenkins build to use `keepAliveMode="session"` instead of `--no-daemon`. ./gradlew compileTestScala -PkeepAliveMode="daemon" --info: > Task :streams:streams-scala:compileTestScala > Watching 928 directories to track changes > Caching disabled for task ':streams:streams-scala:compileTestScala' because: > Build cache is disabled > Task ':streams:streams-scala:compileTestScala' is not up-to-date because: > Input property 'source' file /home/ijuma/src/kafka/streams/streams-scala/src/test/scala/org/apache/kafka/streams/scala/kstream/JoinedTest.scala has changed. > Watching 920 directories to track changes > Watching 919 directories to track changes > Compiling with Zinc Scala compiler. > Prepared Zinc Scala inputs: 0.004 secs > compiling 16 Scala sources to /home/ijuma/src/kafka/streams/streams-scala/build/classes/scala/test ... > done compiling > Completed Scala compilation: 0.925 secs ./gradlew compileTestScala -PkeepAliveMode="session" --info > Task :streams:streams-scala:compileTestScala > Watching 928 directories to track changes > Caching disabled for task ':streams:streams-scala:compileTestScala' because: > Build cache is disabled > Task ':streams:streams-scala:compileTestScala' is not up-to-date because: > Input property 'source' file /home/ijuma/src/kafka/streams/streams-scala/src/test/scala/org/apache/kafka/streams/scala/kstream/JoinedTest.scala has changed. > Watching 920 directories to track changes > Watching 919 directories to track changes > Starting process 'Gradle Worker Daemon 3'. Working directory: /home/ijuma/.gradle/workers Command: /usr/java/jdk-17.0.4.1+1/bin/java -Xss4m -XX:+UseParallelGC --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.regex=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED @/home/ijuma/.gradle/.tmp/gradle-worker-classpath3305983246500958050txt -Xmx2048m -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Worker Daemon 3' > Successfully started process 'Gradle Worker Daemon 3' > Started Gradle worker daemon (0.244 secs) with fork options DaemonForkOptions{executable=/usr/java/jdk-17.0.4.1+1/bin/java, minHeapSize=null, maxHeapSize=2048m, jvmArgs=[-Xss4m, -XX:+UseParallelGC, --add-opens=java.base/java.io=ALL-UNNAMED, --add-opens=java.base/java.lang=ALL-UNNAMED, --add-opens=java.base/java.nio=ALL-UNNAMED, --add-opens=java.base/java.nio.file=ALL-UNNAMED, --add-opens=java.base/java.util=ALL-UNNAMED, --add-opens=java.base/java.util.concurrent=ALL-UNNAMED, --add-opens=java.base/java.util.regex=ALL-UNNAMED, --add-opens=java.base/java.util.stream=ALL-UNNAMED, --add-opens=java.base/java.text=ALL-UNNAMED, --add-opens=java.base/java.time=ALL-UNNAMED, --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED], keepAliveMode=SESSION}. > Compiling with Zinc Scala compiler. > Prepared Zinc Scala inputs: 0.187 secs > compiling 16 Scala sources to /home/ijuma/src/kafka/streams/streams-scala/build/classes/scala/test ... > done compiling > Completed Scala compilation: 5.307 secs See https://github.com/gradle/gradle/issues/20579 for more details. Reviewers: Manikumar Reddy <manikumar.reddy@gmail.com>
2022-12-01 21:33:43 +08:00
--profile --continue -PkeepAliveMode="session" -PtestLoggingEvents=started,passed,skipped,failed \
-PignoreFailures=true -PmaxParallelForks=2 -PmaxTestRetries=1 -PmaxTestRetryFailures=10"""
junit '**/build/test-results/**/TEST-*.xml'
}
def runTestOnDevBranch(env) {
if (!isChangeRequest(env)) {
doTest(env)
}
}
def doStreamsArchetype() {
echo 'Verify that Kafka Streams archetype compiles'
sh '''
KAFKA-12415 Prepare for Gradle 7.0 and restrict transitive scope for non api dependencies (#10203) Gradle 7.0 is required for Java 16 compatibility and it removes a number of deprecated APIs. Fix most issues preventing the upgrade to Gradle 7.0. The remaining ones are more complicated and should be handled in a separate PR. Details of the changes: * Release tarball no longer includes includes test, sources, javadoc and test sources jars (these are still published to the Maven Central repository). * Replace `compile` with `api` or `implementation` - note that `implementation` dependencies appear with `runtime` scope in the pom file so this is a (positive) change in behavior * Add missing dependencies that were uncovered by the usage of `implementation` * Replace `testCompile` with `testImplementation` * Replace `runtime` with `runtimeOnly` and `testRuntime` with `testRuntimeOnly` * Replace `configurations.runtime` with `configurations.runtimeClasspath` * Replace `configurations.testRuntime` with `configurations.testRuntimeClasspath` (except for the usage in the `streams` project as that causes a cyclic dependency error) * Use `java-library` plugin instead of `java` * Use `maven-publish` plugin instead of deprecated `maven` plugin - this changes the commands used to publish and to install locally, but task aliases for `install` and `uploadArchives` were added for backwards compatibility * Removed `-x signArchives` line from the readme since it was wrong (it was a no-op before and it fails now, however) * Replaces `artifacts` block with an approach that works with the `maven-publish` plugin * Don't publish `jmh-benchmark` module - the shadow jar is pretty large and not particularly useful (before this PR, we would publish the non shadow jars) * Replace `version` with `archiveVersion`, `baseName` with `archiveBaseName` and `classifier` with `archiveClassifier` * Update Gradle and plugins to the latest stable version (7.0 is not stable yet) * Use `plugin` DSL to configure plugins * Updated notable changes for 3.0 Reviewers: Chia-Ping Tsai <chia7712@gmail.com>, Randall Hauch <rhauch@gmail.com>
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; }
'''
VERSION = sh(script: 'grep "^version=" gradle.properties | cut -d= -f 2', returnStdout: true).trim()
dir('streams/quickstart') {
sh '''
mvn clean install -Dgpg.skip \
|| { echo 'Could not `mvn install` streams quickstart archetype'; exit 1; }
'''
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; }
"""
dir('streams.examples') {
sh '''
mvn compile \
|| { echo 'Could not compile streams quickstart archetype project'; exit 1; }
'''
}
}
}
}
def tryStreamsArchetype() {
try {
doStreamsArchetype()
} catch(err) {
echo 'Failed to build Kafka Streams archetype, marking this build UNSTABLE'
currentBuild.result = 'UNSTABLE'
}
}
pipeline {
agent none
options {
disableConcurrentBuilds(abortPrevious: isChangeRequest(env))
}
stages {
stage('Build') {
parallel {
stage('JDK 8 and Scala 2.12') {
agent { label 'ubuntu' }
tools {
jdk 'jdk_1.8_latest'
maven 'maven_3_latest'
}
options {
timeout(time: 8, unit: 'HOURS')
timestamps()
}
environment {
SCALA_VERSION=2.12
}
steps {
doValidation()
doTest(env)
tryStreamsArchetype()
}
}
stage('JDK 11 and Scala 2.13') {
agent { label 'ubuntu' }
tools {
jdk 'jdk_11_latest'
}
options {
timeout(time: 8, unit: 'HOURS')
timestamps()
}
environment {
SCALA_VERSION=2.13
}
steps {
doValidation()
runTestOnDevBranch(env)
echo 'Skipping Kafka Streams archetype test for Java 11'
}
}
stage('JDK 17 and Scala 2.13') {
agent { label 'ubuntu' }
tools {
jdk 'jdk_17_latest'
}
options {
timeout(time: 8, unit: 'HOURS')
timestamps()
}
environment {
SCALA_VERSION=2.13
}
steps {
doValidation()
runTestOnDevBranch(env)
echo 'Skipping Kafka Streams archetype test for Java 17'
}
}
stage('JDK 21 and Scala 2.13') {
agent { label 'ubuntu' }
tools {
jdk 'jdk_21_latest'
}
options {
timeout(time: 8, unit: 'HOURS')
timestamps()
}
environment {
SCALA_VERSION=2.13
}
steps {
doValidation()
doTest(env)
echo 'Skipping Kafka Streams archetype test for Java 21'
}
}
}
}
}
post {
always {
script {
if (!isChangeRequest(env)) {
node('ubuntu') {
step([$class: 'Mailer',
notifyEveryUnstableBuild: true,
recipients: "dev@kafka.apache.org",
sendToIndividuals: false])
}
}
}
}
}
}