This is an automated email from the ASF dual-hosted git repository. orpiske pushed a commit to branch camel-4.0.x in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-4.0.x by this push: new ec4ca6ee2ca CAMEL-20383: convert CI jobs to a Matrix job. ec4ca6ee2ca is described below commit ec4ca6ee2ca2e94f31be8cd4a66e5c39d298c97e Author: Otavio Rodolfo Piske <angusyo...@gmail.com> AuthorDate: Wed Mar 20 11:16:25 2024 +0100 CAMEL-20383: convert CI jobs to a Matrix job. --- Jenkinsfile | 166 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Jenkinsfile.jdk17 | 99 ------------------------------- Jenkinsfile.ppc64le | 101 -------------------------------- Jenkinsfile.s390x | 101 -------------------------------- pom.xml | 4 +- 5 files changed, 167 insertions(+), 304 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 00000000000..ba9bee45240 --- /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 1258745eabf..00000000000 --- 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 1386e00a051..00000000000 --- 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 29078da42cb..00000000000 --- 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 3ac6cb46864..443748a677d 100644 --- a/pom.xml +++ b/pom.xml @@ -329,11 +329,9 @@ <Dockerfile.native-micro>SCRIPT_STYLE</Dockerfile.native-micro> <Dockerfile.native>SCRIPT_STYLE</Dockerfile.native> <Dockerfile>SCRIPT_STYLE</Dockerfile> + <Jenkinsfile>SLASHSTAR_STYLE</Jenkinsfile> <Jenkinsfile.deploy>SLASHSTAR_STYLE</Jenkinsfile.deploy> <Jenkinsfile.dryrun>SLASHSTAR_STYLE</Jenkinsfile.dryrun> - <Jenkinsfile.jdk17>SLASHSTAR_STYLE</Jenkinsfile.jdk17> - <Jenkinsfile.ppc64le>SLASHSTAR_STYLE</Jenkinsfile.ppc64le> - <Jenkinsfile.s390x>SLASHSTAR_STYLE</Jenkinsfile.s390x> <atom>XML_STYLE</atom> <bpmn>XML_STYLE</bpmn> <camel-eclipse-pmd>XML_STYLE</camel-eclipse-pmd>