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']]
+            )
+        }
+    }
+}
+

Reply via email to