You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@yetus.apache.org by aw...@apache.org on 2019/05/08 19:03:29 UTC

[yetus] branch master updated: YETUS-874. Add support for Cirrus CI from Cirrus Labs (#49)

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

aw pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/yetus.git


The following commit(s) were added to refs/heads/master by this push:
     new ebdf1ea  YETUS-874. Add support for Cirrus CI from Cirrus Labs (#49)
ebdf1ea is described below

commit ebdf1ea8b65097712827ab31a692592f2a1facc0
Author: Allen Wittenauer <aw...@apache.org>
AuthorDate: Wed May 8 12:03:24 2019 -0700

    YETUS-874. Add support for Cirrus CI from Cirrus Labs (#49)
---
 .cirrus.yml                                        | 35 ++++++++++
 .../documentation/in-progress/precommit-robots.md  | 34 ++++++++++
 .../shell/robots.d/{travisci.sh => cirrusci.sh}    | 78 ++++++++++++----------
 precommit/src/main/shell/robots.d/travisci.sh      |  2 +-
 4 files changed, 112 insertions(+), 37 deletions(-)

diff --git a/.cirrus.yml b/.cirrus.yml
new file mode 100644
index 0000000..16a5e39
--- /dev/null
+++ b/.cirrus.yml
@@ -0,0 +1,35 @@
+# 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.
+
+---
+
+yetus_task:
+  container:
+    image: apache/yetus:master
+  test_script: >
+             ${CIRRUS_WORKING_DIR}/precommit/src/main/shell/test-patch.sh
+             --plugins=all
+             --basedir="${CIRRUS_WORKING_DIR}"
+             --html-report-file=/tmp/yetus-out/report.html
+             --console-report-file=/tmp/yetus-out/console.txt
+             --brief-report-file=/tmp/yetus-out/brief.txt
+             --bugcomments=briefreport,htmlout,junit
+             --tests-filter=checkstyle,javadoc,rubocop,test4tests
+  always:
+    junit_artifacts:
+      path: "yetus-out/junit.xml"
+      format: junit
+    other_artifacts:
+      path: "yetus-out/**"
diff --git a/asf-site-src/source/documentation/in-progress/precommit-robots.md b/asf-site-src/source/documentation/in-progress/precommit-robots.md
index 8e73c1d..0b11fe0 100644
--- a/asf-site-src/source/documentation/in-progress/precommit-robots.md
+++ b/asf-site-src/source/documentation/in-progress/precommit-robots.md
@@ -24,6 +24,7 @@
 * [Intro](#intro)
 * [Azure Pipelines](#azure-pipelines)
 * [Circle CI](#circle-ci)
+* [Cirrus CI](#cirrus-ci)
 * [Gitlab CI](#gitlab-ci)
 * [Jenkins](#jenkins)
 * [Semaphore CI](#semaphore-ci)
@@ -101,6 +102,39 @@ See also:
 
 * Apache Yetus' source tree [.circleci/config.yaml](https://github.com/apache/yetus/blob/master/.circleci/config.yml) for some tips and tricks.
 
+# Cirrus CI
+
+TRIGGER: ${CIRRUS_CI}=true
+
+`--patch-dir` will be configured to be `/tmp/yetus-out` and will be moved to the `yetus-out` directory in the source tree after completion. Adding this stanza to your `.cirrus.yml` file will upload and store those components for a week in Gitlab CI's artifact retrieval system:
+
+```yaml
+---
+  always:
+    junit_artifacts:
+      path: "yetus-out/junit.xml"
+      format: junit
+    other_artifacts:
+      path: "yetus-out/**"
+```
+
+To use the `--patch-dir` for additional output, use the `/tmp/yetus-out` path. For example: `--html-report-file=/tmp/yetus-out/report.html`.
+
+To use the pre-built Apache Yetus Docker image from docker hub as the build environment, use the following snippet in the `.cirrus.yml` file, substituting the tag for the version of Apache Yetus that should be used and replacing the `JAVA_HOME` with the appropriate version as bundled mentioned in the Dockerfile:
+
+```yaml
+---
+yetus_task:
+  container:
+    image: apache/yetus:0.10.0
+
+  ...
+```
+
+See also:
+
+* Apache Yetus' source tree [.cirrus.yml](https://github.com/apache/yetus/blob/master/.cirrus.yml) for some tips and tricks.
+
 # Gitlab CI
 
 TRIGGER: ${GITLAB_CI}=true
diff --git a/precommit/src/main/shell/robots.d/travisci.sh b/precommit/src/main/shell/robots.d/cirrusci.sh
similarity index 58%
copy from precommit/src/main/shell/robots.d/travisci.sh
copy to precommit/src/main/shell/robots.d/cirrusci.sh
index 1334c1f..e1421d2 100755
--- a/precommit/src/main/shell/robots.d/travisci.sh
+++ b/precommit/src/main/shell/robots.d/cirrusci.sh
@@ -16,46 +16,52 @@
 
 # SHELLDOC-IGNORE
 
-if [[ "${TRAVIS}" == true ]] &&
+if [[ "${CIRRUS_CI}" == true ]] &&
   declare -f compile_cycle >/dev/null; then
   # shellcheck disable=SC2034
   ROBOT=true
-
   # shellcheck disable=SC2034
-  if [[ -n "${ARTIFACTS_PATH}" ]]; then
-    PATCH_DIR=${ARTIFACTS_PATH%%:*}
-  fi
-
+  PATCH_BRANCH_DEFAULT=${CIRRUS_DEFAULT_BRANCH}
+  # shellcheck disable=SC2034
+  INSTANCE=${CIRRUS_BUILD_ID}
   # shellcheck disable=SC2034
-  INSTANCE=${TRAVIS_BUILD_ID}
+  ROBOTTYPE=cirrusci
+  PATCH_DIR=/tmp/yetus-out
   # shellcheck disable=SC2034
-  ROBOTTYPE=travisci
+  RELOCATE_PATCH_DIR=true
+
 
   # shellcheck disable=SC2034
-  if [[ "${TRAVIS_PULL_REQUEST}" == false ]]; then
-    BUILDMODE=full
-    PATCH_BRANCH=${TRAVIS_BRANCH}
-  else
+  if [[ "${CIRRUS_PR}" == false ]]; then
     # shellcheck disable=SC2034
     BUILDMODE='patch'
     # shellcheck disable=SC2034
-    PATCH_OR_ISSUE=GH:${TRAVIS_PULL_REQUEST}
-    USER_PARAMS+=("GH:${TRAVIS_PULL_REQUEST}")
+    PATCH_OR_ISSUE=GH:${CIRRUS_PR}
+    USER_PARAMS+=("GH:${CIRRUS_PR}")
+  else
+    BUILDMODE=full
+    PATCH_BRANCH=${CIRRUS_BRANCH}
   fi
 
   # shellcheck disable=SC2034
-  GITHUB_REPO=${TRAVIS_REPO_SLUG}
+  GITHUB_REPO=${CIRRUS_REPO_FULL_NAME}
 
   add_docker_env \
-    TRAVIS \
-    TRAVIS_BRANCH \
-    TRAVIS_BUILD_ID \
-    TRAVIS_BUILD_WEB_URL \
-    TRAVIS_PULL_REQUEST \
-    TRAVIS_REPO_SLUG
+    CI \
+    CIRRUS_CI \
+    CIRRUS_DEFAULT_BRANCH \
+    CIRRUS_BUILD_ID \
+    CIRRUS_PR \
+    CIRRUS_BRANCH \
+    CIRRUS_REPO_FULL_NAME \
+    CIRRUS_TASK_ID \
+    CIRRUS_BUILD_ID
+
+  # shellcheck disable=SC2034
+  BUILD_URL="https://cirrus-ci.com/task/${CIRRUS_TASK_ID}"
 
   # shellcheck disable=SC2034
-  BUILD_URL_CONSOLE=console
+  BUILD_URL_CONSOLE=""
   # shellcheck disable=SC2034
   CONSOLE_USE_BUILD_URL=true
 
@@ -64,29 +70,29 @@ if [[ "${TRAVIS}" == true ]] &&
     pushd "${BASEDIR}" >/dev/null || exit 1
     "${GIT}" config --replace-all remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
     "${GIT}" fetch --tags
-    pushd "${BASEDIR}" >/dev/null || exit 1
+    popd >/dev/null || exit 1
   fi
 
-  yetus_add_array_element EXEC_MODES TravisCI
+  yetus_add_array_element EXEC_MODES CirrusCI
 fi
 
-function travisci_set_plugin_defaults
+function cirrusci_set_plugin_defaults
 {
   # shellcheck disable=SC2034
-  GITHUB_REPO=${TRAVIS_REPO_SLUG}
+  GITHUB_REPO=${CIRRUS_REPO_FULL_NAME}
+  # shellcheck disable=SC2034
+  JUNIT_RESULTS_XML="${PATCH_DIR}/junit.xml"
 }
 
-function travisci_finalreport
+function cirrusci_finalreport
 {
-  add_footer_table "Console output" "${TRAVIS_BUILD_WEB_URL}"
+  add_footer_table "Console output" "${BUILD_URL}"
 }
 
-#function travisci_verify_patchdir
-#{
-#  declare commentfile=$1
-#}
+function cirrusci_artifact_url
+{
+  declare dir
 
-#function travisci_unittest_footer
-#{
-#  declare statusjdk=$1
-#}
+  dir=${PATCH_DIR##*/}
+  echo "https://api.cirrus-ci.com/v1/artifact/task/${CIRRUS_TASK_ID}/other/${dir}"
+}
\ No newline at end of file
diff --git a/precommit/src/main/shell/robots.d/travisci.sh b/precommit/src/main/shell/robots.d/travisci.sh
index 1334c1f..7b230b0 100755
--- a/precommit/src/main/shell/robots.d/travisci.sh
+++ b/precommit/src/main/shell/robots.d/travisci.sh
@@ -64,7 +64,7 @@ if [[ "${TRAVIS}" == true ]] &&
     pushd "${BASEDIR}" >/dev/null || exit 1
     "${GIT}" config --replace-all remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
     "${GIT}" fetch --tags
-    pushd "${BASEDIR}" >/dev/null || exit 1
+    popd >/dev/null || exit 1
   fi
 
   yetus_add_array_element EXEC_MODES TravisCI