diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000000000..ba9bee452404d --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,166 @@ +/* + * 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 MAVEN_PARAMS = "-B -e -fae -V -Dnoassembly -Dmaven.compiler.fork=true -Dsurefire.rerunFailingTestsCount=2 -Dfailsafe.rerunFailingTestsCount=1" +def MAVEN_TEST_PARAMS = env.MAVEN_TEST_PARAMS ?: "-Dkafka.instance.type=local-strimzi-container -Dci.env.name=apache.org" +def MAVEN_TEST_PARAMS_UBUNTU = env.MAVEN_TEST_PARAMS ?: "-Dci.env.name=apache.org" +/* +Below parameters are required for camel/core/camel-core module's test cases to pass on ppc64 and s390x +- xpathExprGrpLimit: limits the number of groups an Xpath expression can contain +- xpathExprOpLimit: limits the number of operators an Xpath expression can contain +*/ +def MAVEN_TEST_PARAMS_ALT_ARCHS = "-Djdk.xml.xpathExprGrpLimit=100 -Djdk.xml.xpathExprOpLimit=2000" + +pipeline { + + environment { + MAVEN_SKIP_RC = true + } + + options { + buildDiscarder( + logRotator(artifactNumToKeepStr: '5', numToKeepStr: '10') + ) + disableConcurrentBuilds() + } + + parameters { + booleanParam(name: 'CLEAN', defaultValue: true, description: 'Perform the build in clean workspace') + booleanParam(name: 'VIRTUAL_THREAD', defaultValue: false, description: 'Perform the build using virtual threads') + choice(name: 'PLATFORM_FILTER', choices: ['all', 'ppc64le', 's390x', 'ubuntu'], description: 'Run on specific platform') + choice(name: 'JDK_FILTER', choices: ['all', 'jdk_17_latest', 'jdk_21_latest'], description: 'Run on specific jdk') + } + agent none + stages { + stage('BuildAndTest') { + matrix { + agent { + label "${PLATFORM}" + } + when { anyOf { + expression { params.PLATFORM_FILTER == 'all' } + expression { params.PLATFORM_FILTER == env.PLATFORM } + expression { params.JDK_FILTER == 'all' } + expression { params.JDK_FILTER == env.JDK_NAME } + } } + axes { + axis { + name 'JDK_NAME' + values 'jdk_17_latest', 'jdk_21_latest' + } + axis { + name 'PLATFORM' + values 'ppc64le', 's390x', 'ubuntu' + } + } + excludes { + exclude { + axis { + name 'JDK_NAME' + values 'jdk_21_latest' + } + axis { + name 'PLATFORM' + values 'ppc64le' + } + } + exclude { + axis { + name 'JDK_NAME' + values 'jdk_21_latest' + } + axis { + name 'PLATFORM' + values 's390x' + } + } + } + tools { + jdk "${JDK_NAME}" + } + stages { + stage('Clean workspace') { + when { + expression { params.CLEAN } + } + steps { + sh 'git clean -fdx' + } + } + + stage('Build') { + steps { + echo "Do Build for ${PLATFORM}-${JDK_NAME}" + sh 'java -version' + sh "./mvnw -U $MAVEN_PARAMS -Dskip.camel.maven.plugin.tests -Darchetype.test.skip -Dmaven.test.skip.exec=true clean install" + } + } + + stage('Code Quality Review') { + steps { + script { + if ("${PLATFORM}" == "ubuntu") { + withCredentials([string(credentialsId: 'apache-camel-core', variable: 'SONAR_TOKEN')]) { + echo "Code quality review ENABLED for ${PLATFORM}" + sh "./mvnw $MAVEN_PARAMS -Dsonar.host.url=https://sonarcloud.io -Dsonar.java.experimental.batchModeSizeInKB=2048 -Dsonar.organization=apache -Dsonar.projectKey=apache_camel -Dsonar.branch.name=$BRANCH_NAME org.sonarsource.scanner.maven:sonar-maven-plugin:sonar" + } + } else { + echo "Code quality review disabled for ${PLATFORM}" + } + } + } + } + + stage('Test') { + steps { + echo "Do Test for ${PLATFORM}-${JDK_NAME}" + timeout(unit: 'HOURS', time: 7) { + script { + if ("${PLATFORM}" == "ubuntu") { + if ("${JDK_NAME}" == "jdk_21_latest") { + sh "./mvnw $MAVEN_PARAMS $MAVEN_TEST_PARAMS_UBUNTU -Darchetype.test.skip -Dmaven.test.failure.ignore=true -Dcheckstyle.skip=true verify -Dcamel.threads.virtual.enabled=${params.VIRTUAL_THREAD}" + } else { + sh "./mvnw $MAVEN_PARAMS $MAVEN_TEST_PARAMS -Darchetype.test.skip -Dmaven.test.failure.ignore=true -Dcheckstyle.skip=true verify" + } + } else { + // Skip the test case execution of modules which are either not supported on ppc64le or vendor images are not available for ppc64le. + sh "./mvnw $MAVEN_PARAMS $MAVEN_TEST_PARAMS $MAVEN_TEST_PARAMS_ALT_ARCHS -Darchetype.test.skip -Dmaven.test.failure.ignore=true -Dcheckstyle.skip=true verify -pl '!docs'" + } + } + } + } + post { + always { + junit allowEmptyResults: true, testResults: '**/target/surefire-reports/*.xml', skipPublishingChecks: true + junit allowEmptyResults: true, testResults: '**/target/failsafe-reports/*.xml', skipPublishingChecks: true + } + } + } + } + post { + always { + echo "Sending report CI email for developers" + emailext( + subject: '${DEFAULT_SUBJECT}', + body: '${DEFAULT_CONTENT}', + recipientProviders: [[$class: 'DevelopersRecipientProvider']] + ) + } + } + } + } + } +} diff --git a/Jenkinsfile.jdk17 b/Jenkinsfile.jdk17 deleted file mode 100644 index 1258745eabfed..0000000000000 --- a/Jenkinsfile.jdk17 +++ /dev/null @@ -1,99 +0,0 @@ -/* - * 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 AGENT_LABEL = env.AGENT_LABEL ?: 'ubuntu' -def JDK_NAME = env.JDK_NAME ?: 'jdk_17_latest' - -def MAVEN_PARAMS = "-B -e -fae -V -Dnoassembly -Dmaven.compiler.fork=true -Dsurefire.rerunFailingTestsCount=2" -def MAVEN_TEST_PARAMS = env.MAVEN_TEST_PARAMS ?: "-Dci.env.name=apache.org" - -pipeline { - - agent { - label AGENT_LABEL - } - - tools { - jdk JDK_NAME - } - - environment { - MAVEN_SKIP_RC = true - } - - options { - buildDiscarder( - logRotator(artifactNumToKeepStr: '5', numToKeepStr: '10') - ) - disableConcurrentBuilds() - } - - parameters { - booleanParam(name: 'CLEAN', defaultValue: true, description: 'Perform the build in clean workspace') - } - - stages { - - stage('Clean workspace') { - when { - expression { params.CLEAN } - } - steps { - sh 'git clean -fdx' - } - } - - stage('Build & Install') { - steps { - sh "./mvnw -U $MAVEN_PARAMS -Darchetype.test.skip -Dmaven.test.skip.exec=true clean install" - } - } - - stage('Code Quality Review') { - steps { - withCredentials([string(credentialsId: 'apache-camel-core', variable: 'SONAR_TOKEN')]) { - sh "./mvnw $MAVEN_PARAMS -Dsonar.host.url=https://sonarcloud.io -Dsonar.java.experimental.batchModeSizeInKB=2048 -Dsonar.organization=apache -Dsonar.projectKey=apache_camel -Dsonar.branch.name=$BRANCH_NAME org.sonarsource.scanner.maven:sonar-maven-plugin:sonar" - } - } - } - - stage('Test') { - steps { - timeout(unit: 'HOURS', time: 7) { - sh "./mvnw $MAVEN_PARAMS $MAVEN_TEST_PARAMS -Darchetype.test.skip -Dmaven.test.failure.ignore=true -Dcheckstyle.skip=true verify" - } - } - post { - always { - junit allowEmptyResults: true, testResults: '**/target/surefire-reports/*.xml' - junit allowEmptyResults: true, testResults: '**/target/failsafe-reports/*.xml' - } - } - } - - } - - post { - always { - emailext( - subject: '${DEFAULT_SUBJECT}', - body: '${DEFAULT_CONTENT}', - recipientProviders: [[$class: 'CulpritsRecipientProvider']] - ) - } - } -} - diff --git a/Jenkinsfile.ppc64le b/Jenkinsfile.ppc64le deleted file mode 100644 index 1386e00a051a7..0000000000000 --- a/Jenkinsfile.ppc64le +++ /dev/null @@ -1,101 +0,0 @@ -/* - * 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 AGENT_LABEL = 'power9' -def JDK_NAME = env.JDK_NAME ?: 'jdk_17_latest' - -def MAVEN_PARAMS = "-B -e -fae -V -Dnoassembly -Dmaven.compiler.fork=true -Dsurefire.rerunFailingTestsCount=2" -def MAVEN_TEST_PARAMS = env.MAVEN_TEST_PARAMS ?: "-Dkafka.instance.type=local-strimzi-container -Dci.env.name=apache.org" -/* -Below parameters are required for camel/core/camel-core module's test cases to pass -- xpathExprGrpLimit: limits the number of groups an Xpath expression can contain -- xpathExprOpLimit: limits the number of operators an Xpath expression can contain -*/ -def MAVEN_TEST_LIMIT_PARAMS = "-Djdk.xml.xpathExprGrpLimit=100 -Djdk.xml.xpathExprOpLimit=2000" - -pipeline { - - agent { - label AGENT_LABEL - } - - tools { - jdk JDK_NAME - } - - environment { - MAVEN_SKIP_RC = true - } - - options { - buildDiscarder( - logRotator(artifactNumToKeepStr: '5', numToKeepStr: '10') - ) - disableConcurrentBuilds() - } - - parameters { - booleanParam(name: 'CLEAN', defaultValue: true, description: 'Perform the build in clean workspace') - } - - stages { - - stage('Clean workspace') { - when { - expression { params.CLEAN } - } - steps { - sh 'git clean -fdx' - } - } - - stage('Build & Install') { - when { - branch 'main' - } - steps { - sh "./mvnw -U $MAVEN_PARAMS -Dquickly clean install" - } - } - - stage('Test') { - steps { - timeout(unit: 'HOURS', time: 7) { - // Skip the test case execution of modules which are either not supported on ppc64le or vendor images are not available for ppc64le. - sh "./mvnw $MAVEN_PARAMS $MAVEN_TEST_PARAMS $MAVEN_TEST_LIMIT_PARAMS -Darchetype.test.skip -Dmaven.test.failure.ignore=true -Dcheckstyle.skip=true verify -pl '!docs'" - } - } - post { - always { - junit allowEmptyResults: true, testResults: '**/target/surefire-reports/*.xml' - junit allowEmptyResults: true, testResults: '**/target/failsafe-reports/*.xml' - } - } - } - - } - - post { - always { - emailext( - subject: '${DEFAULT_SUBJECT}', - body: '${DEFAULT_CONTENT}', - recipientProviders: [[$class: 'CulpritsRecipientProvider']] - ) - } - } -} - diff --git a/Jenkinsfile.s390x b/Jenkinsfile.s390x deleted file mode 100644 index 29078da42cb2f..0000000000000 --- a/Jenkinsfile.s390x +++ /dev/null @@ -1,101 +0,0 @@ -/* - * 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 AGENT_LABEL = 's390x' -def JDK_NAME = env.JDK_NAME ?: 'jdk_17_latest' - -def MAVEN_PARAMS = "-B -e -fae -V -Dnoassembly -Dmaven.compiler.fork=true -Dsurefire.rerunFailingTestsCount=2" -def MAVEN_TEST_PARAMS = env.MAVEN_TEST_PARAMS ?: "-Dkafka.instance.type=local-strimzi-container -Dci.env.name=apache.org" -/* -Below parameters are required for camel/core/camel-core module's test cases to pass -- xpathExprGrpLimit: limits the number of groups an Xpath expression can contain -- xpathExprOpLimit: limits the number of operators an Xpath expression can contain -*/ -def MAVEN_TEST_LIMIT_PARAMS = "-Djdk.xml.xpathExprGrpLimit=100 -Djdk.xml.xpathExprOpLimit=2000" - -pipeline { - - agent { - label AGENT_LABEL - } - - tools { - jdk JDK_NAME - } - - environment { - MAVEN_SKIP_RC = true - } - - options { - buildDiscarder( - logRotator(artifactNumToKeepStr: '5', numToKeepStr: '10') - ) - disableConcurrentBuilds() - } - - parameters { - booleanParam(name: 'CLEAN', defaultValue: true, description: 'Perform the build in clean workspace') - } - - stages { - - stage('Clean workspace') { - when { - expression { params.CLEAN } - } - steps { - sh 'git clean -fdx' - } - } - - stage('Build & Install') { - when { - branch 'main' - } - steps { - sh "./mvnw -U $MAVEN_PARAMS -Dquickly clean install" - } - } - - stage('Test') { - steps { - timeout(unit: 'HOURS', time: 7) { - // Skip the test case execution of modules which are either not supported on s390x or vendor images are not available for s390x. - sh "./mvnw $MAVEN_PARAMS $MAVEN_TEST_PARAMS $MAVEN_TEST_LIMIT_PARAMS -Darchetype.test.skip -Dmaven.test.failure.ignore=true -Dcheckstyle.skip=true verify -pl '!docs'" - } - } - post { - always { - junit allowEmptyResults: true, testResults: '**/target/surefire-reports/*.xml' - junit allowEmptyResults: true, testResults: '**/target/failsafe-reports/*.xml' - } - } - } - - } - - post { - always { - emailext( - subject: '${DEFAULT_SUBJECT}', - body: '${DEFAULT_CONTENT}', - recipientProviders: [[$class: 'CulpritsRecipientProvider']] - ) - } - } -} - diff --git a/pom.xml b/pom.xml index 5634ec733863b..1c45a6733dcf9 100644 --- a/pom.xml +++ b/pom.xml @@ -329,11 +329,9 @@ SCRIPT_STYLE SCRIPT_STYLE SCRIPT_STYLE + SLASHSTAR_STYLE SLASHSTAR_STYLE SLASHSTAR_STYLE - SLASHSTAR_STYLE - SLASHSTAR_STYLE - SLASHSTAR_STYLE XML_STYLE XML_STYLE XML_STYLE