You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2018/03/15 17:52:59 UTC

[incubator-pulsar] branch master updated: Precommit integration test gate (#1392)

This is an automated email from the ASF dual-hosted git repository.

mmerli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new fee5667  Precommit integration test gate (#1392)
fee5667 is described below

commit fee5667e91799433841ac4d1427717b61317263e
Author: Ivan Kelly <iv...@apache.org>
AuthorDate: Thu Mar 15 18:52:57 2018 +0100

    Precommit integration test gate (#1392)
    
    * Precommit integration test gate
    
    Currently there are no integration tests in tree, so the job just
    builds the docker image.
    
    * fixup license
---
 .test-infra/jenkins/common_job_properties.groovy   | 28 +++++----
 .../job_pulsar_precommit_integrationtests.groovy   | 67 ++++++++++++++++++++++
 tests/scripts/post-integ-tests.sh                  | 22 +++++++
 tests/scripts/pre-integ-tests.sh                   | 29 ++++++++++
 4 files changed, 136 insertions(+), 10 deletions(-)

diff --git a/.test-infra/jenkins/common_job_properties.groovy b/.test-infra/jenkins/common_job_properties.groovy
index c9e48fd..08c883d 100644
--- a/.test-infra/jenkins/common_job_properties.groovy
+++ b/.test-infra/jenkins/common_job_properties.groovy
@@ -77,11 +77,28 @@ class common_job_properties {
       daysToKeep(14)
     }
 
+    context.parameters {
+      // This is a recommended setup if you want to run the job manually. The
+      // ${gitrepo} parameter needs to be provided, and defaults to the main repo.
+      stringParam(
+          'gitrepo',
+          scmUrl,
+          'Git repository to build.')
+
+      // This is a recommended setup if you want to run the job manually. The
+      // ${sha1} parameter needs to be provided, and defaults to the main branch.
+      stringParam(
+          'sha1',
+          defaultBranch,
+          'Commit id or refname (eg: origin/pr/9/head) you want to build.')
+    }
+
+
     // Source code management.
     context.scm {
       git {
         remote {
-          url(scmUrl)
+          url('${gitrepo}')
           refspec('+refs/heads/*:refs/remotes/origin/* ' +
                   '+refs/pull/${ghprbPullId}/*:refs/remotes/origin/pr/${ghprbPullId}/*')
         }
@@ -92,15 +109,6 @@ class common_job_properties {
       }
     }
 
-    context.parameters {
-      // This is a recommended setup if you want to run the job manually. The
-      // ${sha1} parameter needs to be provided, and defaults to the main branch.
-      stringParam(
-          'sha1',
-          defaultBranch,
-          'Commit id or refname (eg: origin/pr/9/head) you want to build.')
-    }
-
     context.wrappers {
       // Abort the build if it's stuck for more minutes than specified.
       timeout {
diff --git a/.test-infra/jenkins/job_pulsar_precommit_integrationtests.groovy b/.test-infra/jenkins/job_pulsar_precommit_integrationtests.groovy
new file mode 100644
index 0000000..7a08418
--- /dev/null
+++ b/.test-infra/jenkins/job_pulsar_precommit_integrationtests.groovy
@@ -0,0 +1,67 @@
+/**
+ * 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.
+ */
+import common_job_properties
+
+// This is the Java precommit which runs a maven install, and the current set of precommit tests.
+freeStyleJob('pulsar_precommit_integrationtests') {
+    description('precommit integration test verification for pull requests of <a href="http://pulsar.apache.org">Apache Pulsar</a>.')
+
+    // Set common parameters.
+    common_job_properties.setTopLevelMainJobProperties(delegate)
+
+    // Sets that this is a PreCommit job.
+    common_job_properties.setPreCommit(delegate, 'Integration Tests')
+
+    steps {
+        shell('tests/scripts/pre-integ-tests.sh')
+
+        // Build everything
+        maven {
+            // Set Maven parameters.
+            common_job_properties.setMavenConfig(delegate)
+
+            goals('-B clean install -Pdocker')
+            properties(skipTests: true, interactiveMode: false)
+        }
+
+        maven {
+            // Set Maven parameters.
+            common_job_properties.setMavenConfig(delegate)
+            rootPOM('tests/pom.xml')
+            goals('-B test -DintegrationTests')
+        }
+
+        shell('tests/scripts/post-integ-tests.sh')
+    }
+
+    publishers {
+        archiveArtifacts {
+            allowEmpty(true)
+            pattern('**/target/container-logs/**')
+             // archiveJunit doesn't capture everything, so copy these files
+            pattern('**/surefire-reports/TEST-*.xml')
+            pattern('**/surefire-reports/*.txt')
+            // pre and post scripts should output to .debug-info files if needed
+            pattern('*.debug-info')
+        }
+        archiveJunit('**/surefire-reports/TEST-*.xml') {
+            allowEmptyResults(true)
+        }
+    }
+}
diff --git a/tests/scripts/post-integ-tests.sh b/tests/scripts/post-integ-tests.sh
new file mode 100755
index 0000000..8af7ab8
--- /dev/null
+++ b/tests/scripts/post-integ-tests.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+#
+# 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.
+#
+
+set -ex
+kill $(cat docker-log.pid) || true
diff --git a/tests/scripts/pre-integ-tests.sh b/tests/scripts/pre-integ-tests.sh
new file mode 100755
index 0000000..e5dec32
--- /dev/null
+++ b/tests/scripts/pre-integ-tests.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+#
+# 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.
+#
+
+set -ex
+id
+ulimit -a
+pwd
+df -h
+ps -eo euser,pid,ppid,pgid,start,pcpu,pmem,cmd
+docker network prune -f --filter name=pulsarnet_*
+docker system events > docker.debug-info & echo $! > docker-log.pid
+

-- 
To stop receiving notification emails like this one, please contact
mmerli@apache.org.