This is an automated email from the ASF dual-hosted git repository. orpiske pushed a commit to branch devel-camel-20383 in repository https://gitbox.apache.org/repos/asf/camel.git
commit f4e55a407f3f752a51a13fa5abad54203ac53cf0 Author: Vaishnavi R <v...@var-thinkpadp1gen4i.remote.csb> AuthorDate: Thu Mar 28 14:42:37 2024 +0530 Martix Jenkins pipeline for CI/CD. --- Jenkinsfile.matrix.jdk | 115 +++++++++++++++++++++++++++++++++++++ Jenkinsfile.matrix.node | 147 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 262 insertions(+) diff --git a/Jenkinsfile.matrix.jdk b/Jenkinsfile.matrix.jdk new file mode 100644 index 00000000000..c68d0073a6a --- /dev/null +++ b/Jenkinsfile.matrix.jdk @@ -0,0 +1,115 @@ +/* + * 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 -Dfailsafe.rerunFailingTestsCount=1" +def MAVEN_TEST_PARAMS = env.MAVEN_TEST_PARAMS ?: "-Dci.env.name=apache.org" + +pipeline { + + agent { + label AGENT_LABEL + } + + 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'), + choice(name: 'JDK_FILTER', choices: ['all', 'jdk_17_latest', 'jdk_21_latest'], description: 'Run on specific jdk') + } + stages { + stage('BuildAndTest') { + matrix { + when { anyOf { + expression { params.JDK_FILTER == 'all' } + expression { params.JDK_FILTER == env.JDK_NAME } + } } + axes { + axis { + name 'JDK_NAME' + values 'jdk_17_latest', 'jdk_21_latest' + } + } + tools { + jdk ${JDK_NAME} + } + stages { + stage('Clean workspace') { + when { + expression { params.CLEAN } + } + steps { + sh 'git clean -fdx' + } + } + + stage('Build & Install') { + steps { + echo "Do Build for ${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 { + 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 { + echo "Do Test for ${JDK_NAME}" + sh 'java -version' + 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: 'DevelopersRecipientProvider']] + ) + } + } +} \ No newline at end of file diff --git a/Jenkinsfile.matrix.node b/Jenkinsfile.matrix.node new file mode 100644 index 00000000000..f7fea84d4fb --- /dev/null +++ b/Jenkinsfile.matrix.node @@ -0,0 +1,147 @@ +/* + * 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 = 'ppc64le' +//def JDK_NAME = env.JDK_NAME ?: 'jdk_17_latest' + +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" +/* +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 { + + 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'), + choice(name: 'AGENT_NODE_FILTER', choices: ['all', 'ppc64le', 's390x'], description: 'Run on specific node'), + 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 ${AGENT_LABEL} + } + when { anyOf { + expression { params.AGENT_NODE_FILTER == 'all' } + expression { params.AGENT_NODE_FILTER == env.AGENT_LABEL } + 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 'AGENT_LABEL' + values 'ppc64le', 's390x' + } + } + excludes { + exclude { + axis { + name 'JDK_NAME' + values 'jdk_21_latest' + } + axis { + name 'AGENT_LABEL' + values 'ppc64le' + } + } + exclude { + axis { + name 'JDK_NAME' + values 'jdk_21_latest' + } + axis { + name 'AGENT_LABEL' + values 's390x' + } + } + } + tools { + jdk ${JDK_NAME} + } + stages { + stage('Clean workspace') { + when { + expression { params.CLEAN } + } + steps { + sh 'git clean -fdx' + } + } + + stage('Build & Install') { + /*when { + branch 'main' + }*/ + steps { + echo "Do Build for ${AGENT_LABEL}-${JDK_NAME}" + sh 'java -version' + sh "./mvnw -U $MAVEN_PARAMS -Dskip.camel.maven.plugin.tests -Dquickly clean install" + } + } + + stage('Test') { + steps { + echo "Do Test for ${AGENT_LABEL}-${JDK_NAME}" + sh 'java -version' + 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: 'DevelopersRecipientProvider']] + ) + } + } +} +