[ 
https://issues.apache.org/jira/browse/GEODE-4023?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16273159#comment-16273159
 ] 

ASF GitHub Bot commented on GEODE-4023:
---------------------------------------

metatype closed pull request #1095: GEODE-4023: Add precheckin tests to 
pipeline.
URL: https://github.com/apache/geode/pull/1095
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/ci/docker/Dockerfile b/ci/docker/Dockerfile
index 70e3b5b0c7..097bba5c5d 100644
--- a/ci/docker/Dockerfile
+++ b/ci/docker/Dockerfile
@@ -16,19 +16,37 @@
 FROM apachegeode/geode-build
 ENTRYPOINT []
 
-# Setup Google APT repository
-RUN apt-get update && \
-    apt-get install -y lsb-release && \
-    echo "deb http://packages.cloud.google.com/apt cloud-sdk-$(lsb_release -c 
-s) main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && \
-    curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - 
&& \
-    apt-get update && apt-get install -y google-cloud-sdk && \
-    apt-get clean
+# apt prerequisites for installing docker and gcloud
+RUN apt-get update
+RUN apt-get install -y apt-transport-https ca-certificates aptitude 
lsb-release jq unzip vim htop golang cgroupfs-mount
+RUN apt-key adv --keyserver hkp://pgp.mit.edu --recv-keys 
58118E89F3A912897C070ADBF76221572C52609D
+RUN curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
+
+# Setup APT repostories
+ADD docker.list /etc/apt/sources.list.d/
+RUN echo "deb http://packages.cloud.google.com/apt cloud-sdk-$(lsb_release -c 
-s) main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
+
+# Install docker and gcloud
+RUN apt-get update
+RUN apt-get purge lxc-docker
+RUN apt-get install -y docker-engine google-cloud-sdk && apt-get clean
 
 # For a CI tool, disable updates to gcloud since they'll be thrown away at end 
of run
 RUN gcloud config set core/disable_usage_reporting true && \
     gcloud config set component_manager/disable_update_check true && \
     gcloud config set metrics/environment github_docker_image
 
+# Install Tini and associated wrapper
+ADD 
https://github.com/krallin/tini/releases/download/v0.14.0/tini-static-amd64 
/usr/local/bin/tini
+RUN chmod +x /usr/local/bin/tini
+ADD tini-wrapper.go .
+RUN go build -o /usr/local/bin/tini-wrapper ./tini-wrapper.go
+
+# Init script for docker inside our workers
+ADD ./initdocker /usr/local/bin/initdocker
+RUN chmod +x /usr/local/bin/initdocker
+
+# Cache gradle for performance
 ENV GRADLE_USER_HOME /usr/local/maven_files
 WORKDIR /tmp/work
 ADD cache_dependencies.sh cache_dependencies.sh
diff --git a/ci/docker/docker.list b/ci/docker/docker.list
new file mode 100644
index 0000000000..e719b6463c
--- /dev/null
+++ b/ci/docker/docker.list
@@ -0,0 +1,17 @@
+# 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.
+
+deb https://apt.dockerproject.org/repo debian-stretch main
diff --git a/ci/docker/initdocker b/ci/docker/initdocker
new file mode 100644
index 0000000000..7340f95dc2
--- /dev/null
+++ b/ci/docker/initdocker
@@ -0,0 +1,31 @@
+#!/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 -e
+
+IMAGE_ROOT="$PWD/image-root"
+
+/usr/bin/cgroupfs-mount
+
+mkdir -p /tmp/build/graph
+mount -t tmpfs -o size=5g tmpfs /tmp/build/graph
+
+dockerd --data-root /tmp/build/graph -s aufs >/tmp/dockerd.log 2>&1 &
+
+until docker info &>/dev/null; do
+  echo waiting for docker to come up...
+  sleep 1
+done
diff --git a/ci/docker/tini-wrapper.go b/ci/docker/tini-wrapper.go
new file mode 100644
index 0000000000..15636a7fa1
--- /dev/null
+++ b/ci/docker/tini-wrapper.go
@@ -0,0 +1,42 @@
+package main
+
+/*
+ * 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 (
+       "os"
+       "syscall"
+       "os/exec"
+       "log"
+)
+
+func main() {
+       tini, err := exec.LookPath("tini")
+       if err != nil {
+               log.Panicf("Unable to find 'tini' in PATH")
+       }
+
+       os.Setenv("TINI_SUBREAPER", "1")
+
+       tiniArgs := []string{"-s", os.Args[1], "--"}
+       for _, v := range os.Args[2:] {
+               tiniArgs = append(tiniArgs, v)
+       }
+
+       err = syscall.Exec(tini, tiniArgs, os.Environ())
+       if err != nil {
+               panic(err)
+       }
+}
diff --git a/ci/pipelines/develop.yml b/ci/pipelines/develop.yml
index 8f11ed0b05..9b6ae548dd 100644
--- a/ci/pipelines/develop.yml
+++ b/ci/pipelines/develop.yml
@@ -16,6 +16,14 @@
 #
 
 ---
+image_resource: &docker-geode-build-image
+  type: docker-image
+  source:
+    username: ((!docker-username))
+    password: ((!docker-password))
+    repository: gcr.io/apachegeode-ci/((!docker-image-name))
+    tag: latest
+
 resource_types:
   - name: gcs-resource
     type: docker-image
@@ -27,6 +35,12 @@ resource_types:
       repository: pcfseceng/email-resource
 
 resources:
+- name: docker-test-image
+  type: docker-image
+  source:
+    username: ((!docker-username))
+    password: ((!docker-password))
+    repository: gcr.io/apachegeode-ci/((!docker-image-name))
 - name: geode
   type: git
   source:
@@ -84,27 +98,281 @@ jobs:
         outputs:
         - name: built-geode
         - name: results
-        image_resource:
-          type: docker-image
-          source:
-            username: ((!docker-username))
-            password: ((!docker-password))
-            repository: gcr.io/apachegeode-ci/apachegeode-build-concourse
-            tag: latest
+        image_resource: *docker-geode-build-image
         params:
           MAINTENANCE_VERSION: ((!maintenance-version))
           SERVICE_ACCOUNT: ((!concourse-gcp-account))
+          PUBLIC_BUCKET: ((!public-bucket))
         run:
           path: geode-ci/ci/scripts/build.sh
-      ensure:
+      on_failure:
         aggregate:
           - put: send-notification-email
             params:
               subject: results/subject
               body: results/body
+      ensure:
+        aggregate:
           - put: geode-build-artifact
             params:
               file: built-geode/geodefiles-*.tgz
           - put: geode-build-version
             params:
               file: results/number
+- name: DistributedTest
+  serial: true
+  public: true
+  plan:
+    - aggregate:
+      - get: geode
+        passed: [Build]
+        trigger: true
+      - get: geode-ci
+      - get: geode-build-version
+        passed: [Build]
+      - get: docker-test-image
+        params:
+          rootfs: true
+    - task: runtests
+      privileged: true
+      timeout: 6h
+      config:
+        inputs:
+          - name: geode
+          - name: geode-ci
+          - name: docker-test-image
+          - name: geode-build-version
+        platform: linux
+        outputs:
+          - name: built-geode
+        image_resource: *docker-geode-build-image
+        params:
+          MAINTENANCE_VERSION: ((!maintenance-version))
+          SERVICE_ACCOUNT: ((!concourse-gcp-account))
+          PUBLIC_BUCKET: ((!public-bucket))
+          PARALLEL_DUNIT: true
+          DUNIT_PARALLEL_FORKS: 7
+        run:
+          args:
+          - distributedTest
+          - distributedtestfiles
+          path: geode-ci/ci/scripts/test-run.sh
+      on_failure:
+        aggregate:
+          - put: send-notification-email
+            params:
+              subject: built-geode/subject
+              body: built-geode/body
+      ensure:
+         aggregate:
+         - task: archive-results
+           config:
+             inputs:
+               - name: geode-ci
+               - name: geode-build-version
+               - name: built-geode
+             platform: linux
+             image_resource: *docker-geode-build-image
+             params:
+               MAINTENANCE_VERSION: ((!maintenance-version))
+               SERVICE_ACCOUNT: ((!concourse-gcp-account))
+               PUBLIC_BUCKET: ((!public-bucket))
+             run:
+               args:
+               - distrbutedTest
+               - distributedtestfiles
+               path: geode-ci/ci/scripts/test-archive.sh
+
+- name: AcceptanceTest
+  serial: true
+  public: true
+  plan:
+    - aggregate:
+      - get: geode
+        passed: [Build]
+        trigger: true
+      - get: geode-ci
+      - get: geode-build-version
+        passed: [Build]
+      - get: docker-test-image
+        params:
+          rootfs: true
+    - task: runtests
+      privileged: true
+      timeout: 6h
+      config:
+        inputs:
+          - name: geode
+          - name: geode-ci
+          - name: docker-test-image
+          - name: geode-build-version
+        platform: linux
+        outputs:
+          - name: built-geode
+        image_resource: *docker-geode-build-image
+        params:
+          MAINTENANCE_VERSION: ((!maintenance-version))
+          SERVICE_ACCOUNT: ((!concourse-gcp-account))
+          PUBLIC_BUCKET: ((!public-bucket))
+          PARALLEL_DUNIT: true
+          DUNIT_PARALLEL_FORKS: 1
+        run:
+          args:
+          - :geode-assembly:acceptanceTest
+          - acceptancetestfiles
+          path: geode-ci/ci/scripts/test-run.sh
+      on_failure:
+        aggregate:
+          - put: send-notification-email
+            params:
+              subject: built-geode/subject
+              body: built-geode/body
+      ensure:
+         aggregate:
+         - task: archive-results
+           config:
+             inputs:
+               - name: geode
+               - name: geode-ci
+               - name: geode-build-version
+               - name: built-geode
+             platform: linux
+             image_resource: *docker-geode-build-image
+             params:
+               MAINTENANCE_VERSION: ((!maintenance-version))
+               SERVICE_ACCOUNT: ((!concourse-gcp-account))
+               PUBLIC_BUCKET: ((!public-bucket))
+             run:
+               args:
+               - :geode-assembly:acceptanceTest
+               - acceptancetestfiles
+               path: geode-ci/ci/scripts/test-archive.sh
+
+- name: IntegrationTest
+  serial: true
+  public: true
+  plan:
+    - aggregate:
+      - get: geode
+        passed: [Build]
+        trigger: true
+      - get: geode-ci
+      - get: geode-build-version
+        passed: [Build]
+      - get: docker-test-image
+        params:
+          rootfs: true
+    - task: runtests
+      privileged: true
+      timeout: 6h
+      config:
+        inputs:
+          - name: geode
+          - name: geode-ci
+          - name: docker-test-image
+          - name: geode-build-version
+        platform: linux
+        outputs:
+          - name: built-geode
+        image_resource: *docker-geode-build-image
+        params:
+          MAINTENANCE_VERSION: ((!maintenance-version))
+          SERVICE_ACCOUNT: ((!concourse-gcp-account))
+          PUBLIC_BUCKET: ((!public-bucket))
+          PARALLEL_DUNIT: true
+          DUNIT_PARALLEL_FORKS: 1
+        run:
+          args:
+          - integrationTest
+          - integrationtestfiles
+          path: geode-ci/ci/scripts/test-run.sh
+      on_failure:
+        aggregate:
+          - put: send-notification-email
+            params:
+              subject: built-geode/subject
+              body: built-geode/body
+      ensure:
+         aggregate:
+         - task: archive-results
+           config:
+             inputs:
+               - name: geode
+               - name: geode-ci
+               - name: geode-build-version
+               - name: built-geode
+             platform: linux
+             image_resource: *docker-geode-build-image
+             params:
+               MAINTENANCE_VERSION: ((!maintenance-version))
+               SERVICE_ACCOUNT: ((!concourse-gcp-account))
+               PUBLIC_BUCKET: ((!public-bucket))
+             run:
+               args:
+               - integrationTest
+               - integrationtestfiles
+               path: geode-ci/ci/scripts/test-archive.sh
+
+- name: FlakyTest
+  serial: true
+  public: true
+  plan:
+    - aggregate:
+      - get: geode
+        passed: [Build]
+        trigger: true
+      - get: geode-ci
+      - get: geode-build-version
+        passed: [Build]
+      - get: docker-test-image
+        params:
+          rootfs: true
+    - task: runtests
+      privileged: true
+      timeout: 6h
+      config:
+        inputs:
+          - name: geode
+          - name: geode-ci
+          - name: docker-test-image
+          - name: geode-build-version
+        platform: linux
+        outputs:
+          - name: built-geode
+        image_resource: *docker-geode-build-image
+        params:
+          MAINTENANCE_VERSION: ((!maintenance-version))
+          SERVICE_ACCOUNT: ((!concourse-gcp-account))
+          PUBLIC_BUCKET: ((!public-bucket))
+        run:
+          args:
+          - flakyTest
+          - flakytestfiles
+          path: geode-ci/ci/scripts/test-run.sh
+      on_failure:
+        aggregate:
+          - put: send-notification-email
+            params:
+              subject: built-geode/subject
+              body: built-geode/body
+      ensure:
+         aggregate:
+         - task: archive-results
+           config:
+             inputs:
+               - name: geode
+               - name: geode-ci
+               - name: geode-build-version
+               - name: built-geode
+             platform: linux
+             image_resource: *docker-geode-build-image
+             params:
+               MAINTENANCE_VERSION: ((!maintenance-version))
+               SERVICE_ACCOUNT: ((!concourse-gcp-account))
+               PUBLIC_BUCKET: ((!public-bucket))
+             run:
+               args:
+               - flakyTest
+               - flakytestfiles
+               path: geode-ci/ci/scripts/test-archive.sh
+
diff --git a/ci/pipelines/docker-images.yml b/ci/pipelines/docker-images.yml
index aa36b85853..afa7461e31 100644
--- a/ci/pipelines/docker-images.yml
+++ b/ci/pipelines/docker-images.yml
@@ -31,7 +31,7 @@ resources:
   source:
     username: ((!docker-username))
     password: ((!docker-password))
-    repository: gcr.io/apachegeode-ci/apachegeode-build-concourse
+    repository: gcr.io/apachegeode-ci/((!docker-image-name))
 
 jobs:
 # apachegeode-build-concourse
diff --git a/ci/scripts/build.sh b/ci/scripts/build.sh
index ae59d7ed70..3f55fe90b1 100755
--- a/ci/scripts/build.sh
+++ b/ci/scripts/build.sh
@@ -42,6 +42,11 @@ if [ -z ${SERVICE_ACCOUNT+x} ]; then
   exit 1
 fi
 
+if [ -z ${PUBLIC_BUCKET+x} ]; then
+  echo "PUBLIC_BUCKET is unset. Check your pipeline configuration and make 
sure this script is called properly."
+  exit 1
+fi
+
 if [ -z ${GEODE_BUILD_VERSION_NUMBER+x} ]; then
   echo "gradle.properties does not seem to contain a valid versionNumber. 
Please check the source tree."
   exit 1
@@ -81,8 +86,8 @@ GRADLE_EXIT_STATUS=$?
 set -e
 
 popd
-ARTIFACTS_DESTINATION="files.apachegeode-ci.info/builds/${FULL_PRODUCT_VERSION}"
-TEST_RESULTS_DESTINATION="${ARTIFACTS_DESTINATION}/test-results/"
+ARTIFACTS_DESTINATION="${PUBLIC_BUCKET}/builds/${FULL_PRODUCT_VERSION}"
+TEST_RESULTS_DESTINATION="${ARTIFACTS_DESTINATION}/test-results/build/"
 
FULL_BUILD_ARCHIVE_DESTINATION="${ARTIFACTS_DESTINATION}/geodefiles-${FULL_PRODUCT_VERSION}.tgz"
 BUILD_ARTIFACTS_FILENAME=geode-build-artifacts-${FULL_PRODUCT_VERSION}.tgz
 
BUILD_ARTIFACTS_DESTINATION="${ARTIFACTS_DESTINATION}/${BUILD_ARTIFACTS_FILENAME}"
diff --git a/ci/scripts/test-archive.sh b/ci/scripts/test-archive.sh
new file mode 100755
index 0000000000..30995248fc
--- /dev/null
+++ b/ci/scripts/test-archive.sh
@@ -0,0 +1,121 @@
+#!/usr/local/bin/tini-wrapper /bin/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 -e
+
+export TERM=${TERM:-dumb}
+export BUILDROOT=$(pwd)
+export DEST_DIR=${BUILDROOT}/built-geode
+export GRADLE_TASK=${1}
+export BASE_FILENAME=${2}
+export TMPDIR=${DEST_DIR}/tmp
+export GEODE_BUILD=${DEST_DIR}/test
+export GEODE_BUILD_VERSION_NUMBER=$(grep "versionNumber *=" 
geode/gradle.properties | awk -F "=" '{print $2}' | tr -d ' ')
+
+GEODE_BUILD_VERSION_FILE=${BUILDROOT}/geode-build-version/number
+
+if [ ! -e "${GEODE_BUILD_VERSION_FILE}" ]; then
+  echo "${GEODE_BUILD_VERSION_FILE} file does not exist. Concourse is probably 
not configured correctly."
+  exit 1
+fi
+if [ -z ${MAINTENANCE_VERSION+x} ]; then
+  echo "MAINTENANCE_VERSION is unset. Check your pipeline configuration and 
make sure this script is called properly."
+  exit 1
+fi
+
+EMAIL_SUBJECT="${BUILDROOT}/built-geode/subject"
+EMAIL_BODY="${BUILDROOT}/built-geode/body"
+
+# Called by trap when the script is exiting
+function error_exit() {
+  echo "Geode unit tests completed in pipeline ${PIPELINE_NAME} with non-zero 
exit code" > $EMAIL_SUBJECT
+  echo "Pipeline results can be found at:" >$EMAIL_BODY
+  echo "" >>$EMAIL_BODY
+  echo "Concourse: 
\${ATC_EXTERNAL_URL}/teams/\${BUILD_TEAM_NAME}/pipelines/\${BUILD_PIPELINE_NAME}/jobs/\${BUILD_JOB_NAME}/builds/\${BUILD_NAME}"
 >>$EMAIL_BODY
+  echo "" >>$EMAIL_BODY
+}
+
+trap error_exit ERR
+
+CONCOURSE_VERSION=$(cat ${GEODE_BUILD_VERSION_FILE})
+CONCOURSE_PRODUCT_VERSION=${CONCOURSE_VERSION%%-*}
+GEODE_PRODUCT_VERSION=${GEODE_BUILD_VERSION_NUMBER}
+CONCOURSE_BUILD_SLUG=${CONCOURSE_VERSION##*-}
+BUILD_ID=${CONCOURSE_VERSION##*.}
+FULL_PRODUCT_VERSION=${GEODE_PRODUCT_VERSION}-${CONCOURSE_BUILD_SLUG}
+
+echo "Concourse VERSION is ${CONCOURSE_VERSION}"
+echo "Geode product VERSION is ${GEODE_PRODUCT_VERSION}"
+echo "Build ID is ${BUILD_ID}"
+
+
+directories_file=${DEST_DIR}/artifact_directories
+mkdir -p ${TMPDIR}
+
+echo "TMPDIR = ${TMPDIR}"
+echo "GRADLE_TASK = ${GRADLE_TASK}"
+echo "BASE_FILENAME = ${BASE_FILENAME}"
+
+gcloud config set account ${SERVICE_ACCOUNT}
+
+
+export FILENAME=${BASE_FILENAME}-${FULL_PRODUCT_VERSION}.tgz
+
+pushd ${GEODE_BUILD}
+
+  set +e
+  ./gradlew combineReports
+  find . -type d -name "reports" > ${directories_file}
+  find . -type d -name "test-results" >> ${directories_file}
+  (find . -type d -name "*Test" | grep "build/[^/]*Test$") >> 
${directories_file}
+  find . -name "*-progress*txt" >> ${directories_file}
+  echo "Collecting the following artifacts..."
+  cat ${directories_file}
+  echo ""
+  tar zcf ${DEST_DIR}/${FILENAME} -T ${directories_file}
+popd
+
+ARTIFACTS_DESTINATION="${PUBLIC_BUCKET}/builds/${FULL_PRODUCT_VERSION}"
+TEST_RESULTS_DESTINATION="${ARTIFACTS_DESTINATION}/test-results/${GRADLE_TASK}/"
+TEST_ARTIFACTS_DESTINATION="${ARTIFACTS_DESTINATION}/test-artifacts/"
+FULL_BUILD_ARCHIVE_DESTINATION="${ARTIFACTS_DESTINATION}/geodefiles-${FULL_PRODUCT_VERSION}.tgz"
+BUILD_ARTIFACTS_FILENAME=geode-build-artifacts-${FULL_PRODUCT_VERSION}.tgz
+BUILD_ARTIFACTS_DESTINATION="${ARTIFACTS_DESTINATION}/${BUILD_ARTIFACTS_FILENAME}"
+
+
+if [ ! -d "${GEODE_BUILD}/build/reports/combined" ]; then
+    echo "No tests exist, compile failed."
+    mkdir -p ${GEODE_BUILD}/build/reports/combined
+    echo "<html><head><title>No Test Results Were 
Captured</title></head><body><h1>No Test Results Were 
Captured</h1></body></html>" > ${GEODE_BUILD}/build/reports/combined/index.html
+fi
+
+pushd ${GEODE_BUILD}/build/reports/combined
+gsutil -q -m cp -r * gs://${TEST_RESULTS_DESTINATION}
+popd
+
+echo ""
+printf "\033[92m=-=-=-=-=-=-=-=-=-=-=-=-=-=  Test Results Website 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\033[0m\n"
+printf "\033[92mhttp://${TEST_RESULTS_DESTINATION}\033[0m\n";
+printf 
"\033[92m=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\033[0m\n"
+printf "\n"
+
+gsutil cp ${DEST_DIR}/${FILENAME} gs://${TEST_ARTIFACTS_DESTINATION}
+
+printf "\033[92mTest artifacts from this job are available at:\033[0m\n"
+printf "\n"
+printf "\033[92mhttp://${TEST_ARTIFACTS_DESTINATION}${FILENAME}\033[0m\n";
diff --git a/ci/scripts/test-run.sh b/ci/scripts/test-run.sh
new file mode 100755
index 0000000000..bb22b82a56
--- /dev/null
+++ b/ci/scripts/test-run.sh
@@ -0,0 +1,142 @@
+#!/usr/local/bin/tini-wrapper /bin/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 -x
+set -e
+
+export TERM=${TERM:-dumb}
+export BUILDROOT=$(pwd)
+export DEST_DIR=${BUILDROOT}/built-geode
+export GRADLE_TASK=${1}
+export BASE_FILENAME=${2}
+export TMPDIR=${DEST_DIR}/tmp
+export GEODE_BUILD=${DEST_DIR}/test
+export GEODE_BUILD_VERSION_NUMBER=$(grep "versionNumber *=" 
geode/gradle.properties | awk -F "=" '{print $2}' | tr -d ' ')
+
+GEODE_BUILD_VERSION_FILE=${BUILDROOT}/geode-build-version/number
+if [ ! -e "${GEODE_BUILD_VERSION_FILE}" ]; then
+  echo "${GEODE_BUILD_VERSION_FILE} file does not exist. Concourse is probably 
not configured correctly."
+  exit 1
+fi
+if [ -z ${MAINTENANCE_VERSION+x} ]; then
+  echo "MAINTENANCE_VERSION is unset. Check your pipeline configuration and 
make sure this script is called properly."
+  exit 1
+fi
+
+EMAIL_SUBJECT="${BUILDROOT}/built-geode/subject"
+EMAIL_BODY="${BUILDROOT}/built-geode/body"
+
+# Called by trap when the script is exiting
+function error_exit() {
+  echo "Geode tests completed in pipeline ${PIPELINE_NAME} with non-zero exit 
code" > $EMAIL_SUBJECT
+  echo "Pipeline results can be found at:" >$EMAIL_BODY
+  echo "" >>$EMAIL_BODY
+  echo "Concourse: 
\${ATC_EXTERNAL_URL}/teams/\${BUILD_TEAM_NAME}/pipelines/\${BUILD_PIPELINE_NAME}/jobs/\${BUILD_JOB_NAME}/builds/\${BUILD_NAME}"
 >>$EMAIL_BODY
+  echo "" >>$EMAIL_BODY
+}
+
+trap error_exit ERR
+
+CONCOURSE_VERSION=$(cat ${GEODE_BUILD_VERSION_FILE})
+CONCOURSE_PRODUCT_VERSION=${CONCOURSE_VERSION%%-*}
+GEODE_PRODUCT_VERSION=${GEODE_BUILD_VERSION_NUMBER}
+CONCOURSE_BUILD_SLUG=${CONCOURSE_VERSION##*-}
+BUILD_ID=${CONCOURSE_VERSION##*.}
+FULL_PRODUCT_VERSION=${GEODE_PRODUCT_VERSION}-${CONCOURSE_BUILD_SLUG}
+
+echo "Concourse VERSION is ${CONCOURSE_VERSION}"
+echo "Product VERSION is ${FULL_PRODUCT_VERSION}"
+echo "Build ID is ${BUILD_ID}"
+
+printf "\nUsing the following JDK:"
+java -version
+printf "\n\n"
+
+directories_file=${DEST_DIR}/artifact_directories
+mkdir -p ${TMPDIR}
+
+echo "TMPDIR = ${TMPDIR}"
+echo "GRADLE_TASK = ${GRADLE_TASK}"
+echo "BASE_FILENAME = ${BASE_FILENAME}"
+
+DOCKER_RESOURCE="docker-test-image"
+DOCKER_PIDFILE="/var/run/docker.pid"
+
+if [ -e ${DOCKER_RESOURCE}/rootfs.tar ]; then
+  if [ -e /usr/local/bin/initdocker ]; then
+    echo "Initializing Docker environment..."
+    /usr/local/bin/initdocker || true
+
+    # Stuff like ENV settings don't automatically get imported
+    CHANGE=()
+    for i in $(jq -r '.env | .[]' ${DOCKER_RESOURCE}/metadata.json); do
+      CHANGE+=( $(echo "$i" | awk -F= '{printf("--change \"ENV %s %s\"", $1, 
$2)}') )
+    done
+
+    REPO=$(cat ${DOCKER_RESOURCE}/repository)
+    echo "Importing Docker image..."
+    eval "docker import ${CHANGE[@]} ${DOCKER_RESOURCE}/rootfs.tar $REPO"
+    DUNIT_DOCKER_IMAGE="-PdunitDockerImage=${REPO}"
+    echo "Docker initialization complete."
+  fi
+fi
+
+DEFAULT_GRADLE_TASK_OPTIONS="--no-daemon -x javadoc -x spotlessCheck"
+
+mkdir -p ${GEODE_BUILD}
+
+pushd geode
+  tar cf - * | (cd ${GEODE_BUILD}; tar xpf -)
+popd
+
+export FILENAME=${BASE_FILENAME}-${FULL_PRODUCT_VERSION}.tgz
+
+if [ -n "${PARALLEL_DUNIT}" ]; then
+  PARALLEL_DUNIT="-PparallelDunit"
+fi
+
+if [ -n "${DUNIT_PARALLEL_FORKS}" ]; then
+  DUNIT_PARALLEL_FORKS="-PdunitParallelForks=${DUNIT_PARALLEL_FORKS}"
+fi
+
+pushd ${GEODE_BUILD}
+  set +e
+  echo "Running tests"
+  set -x
+#    ./gradlew --no-daemon -x javadoc -x spotlessCheck 
:geode-assembly:acceptanceTest --tests 
org.apache.geode.management.internal.cli.commands.PutCommandWithJsonTest
+  ./gradlew ${PARALLEL_DUNIT} ${DUNIT_PARALLEL_FORKS} ${DUNIT_DOCKER_IMAGE} \
+      --system-prop "java.io.tmpdir=${TMPDIR}" ${DEFAULT_GRADLE_TASK_OPTIONS} 
${GRADLE_TASK}
+  export GRADLE_EXIT_STATUS=$?
+  set +x
+popd
+
+echo "*************************************************************"
+echo "Results information is located in the 'archive-results' task"
+echo "*************************************************************"
+
+echo "GRADLE_EXIT_STATUS is ${GRADLE_EXIT_STATUS}"
+
+
+if [ -e ${DOCKER_PIDFILE} ]; then
+  kill $(cat ${DOCKER_PIDFILE})
+fi
+
+if [[ "${GRADLE_EXIT_STATUS}" != "0" && "${GRADLE_TASK}" == "test" ]]; then
+  error_exit
+fi
+exit ${GRADLE_EXIT_STATUS}


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> Add precheckin tests to concourse pipeline
> ------------------------------------------
>
>                 Key: GEODE-4023
>                 URL: https://issues.apache.org/jira/browse/GEODE-4023
>             Project: Geode
>          Issue Type: Improvement
>          Components: ci
>            Reporter: Sean Goller
>
> Improve the Geode Concourse pipeline by adding those tests run by the 
> `precheckin` gradle target.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to