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

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


The following commit(s) were added to refs/heads/master by this push:
     new f92933b3 BIGTOP-3801. Add maven cache volume for docker provisioner 
(#999)
f92933b3 is described below

commit f92933b35e33db9759dc057058a82d9084fe5e85
Author: Leona Yoda <[email protected]>
AuthorDate: Sat Sep 3 16:49:08 2022 +0900

    BIGTOP-3801. Add maven cache volume for docker provisioner (#999)
---
 bigtop-ci/build.sh | 22 +++++++++++++++++++++-
 packages.gradle    |  8 +++++++-
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/bigtop-ci/build.sh b/bigtop-ci/build.sh
index 51f901c5..f1d829fc 100755
--- a/bigtop-ci/build.sh
+++ b/bigtop-ci/build.sh
@@ -17,7 +17,7 @@
 BIGTOP_HOME=`cd $(dirname $0)/.. && pwd`
 
 usage() {
-    echo "usage build.sh --prefix trunk|1.4.0|1.3.0|... --os 
debian-10|centos-7|... --target hadoop|tez|... [--nexus] [--docker-run-option 
...]"
+    echo "usage build.sh --prefix trunk|1.4.0|1.3.0|... --os 
debian-10|centos-7|... --target hadoop|tez|... [--nexus] [--mvn-cache-volume 
true|false] [--docker-run-option ...]"
     exit 1 # unknown option
 }
 
@@ -46,6 +46,10 @@ case $key in
     CONFIGURE_NEXUS="configure-nexus"
     shift
     ;;
+    --mvn-cache-volume)
+    MVN_CACHE_VOLUME="$2"
+    shift
+    ;;
     --docker-run-option)
     DOCKER_RUN_OPTION="$2"
     shift
@@ -75,6 +79,22 @@ if [ "x86_64" != $ARCH ]; then
     IMAGE_NAME=$IMAGE_NAME-$ARCH
 fi
 
+# Add / Delete named volume for maven cache
+MVN_CACHE_VOLUME_NAME="bigtop-mvn-cache-${OS}"
+if [ "${MVN_CACHE_VOLUME}" == "true" ]; then
+    # Create volume and change the ownership if the volume does not exsit
+    if [ -z "$(docker volume ls -q -f name=${MVN_CACHE_VOLUME_NAME})" ]; then
+        docker volume create $MVN_CACHE_VOLUME_NAME
+        docker run --rm \
+          -v ${MVN_CACHE_VOLUME_NAME}:/var/lib/jenkins/.m2 \
+          --name bigtop-mvn-cache-init $IMAGE_NAME \
+          chown -R jenkins:jenkins /var/lib/jenkins/.m2
+    fi
+    DOCKER_RUN_OPTION="${DOCKER_RUN_OPTION} -v 
${MVN_CACHE_VOLUME_NAME}:/var/lib/jenkins/.m2"
+elif [ "${MVN_CACHE_VOLUME}" == "false" ]; then
+  docker volume rm --force $MVN_CACHE_VOLUME_NAME
+fi
+
 # Start up build container
 CONTAINER_ID=`docker run -d $DOCKER_RUN_OPTION $NEXUS $IMAGE_NAME /sbin/init`
 trap "docker rm -f $CONTAINER_ID" EXIT
diff --git a/packages.gradle b/packages.gradle
index ae1781fa..ed51e647 100644
--- a/packages.gradle
+++ b/packages.gradle
@@ -651,7 +651,8 @@ def genTasks = { target ->
           description: "Invoking a native binary packaging for $target in 
Docker. Usage: \$ ./gradlew " +
                   "-POS=[centos-7|fedora-35|debian-10|ubuntu-18.04] " +
                   "-Pprefix=[trunk|1.4.0|1.3.0|1.2.1|...] $target-pkg-ind " +
-                  "-Pnexus=[true|false]",
+                  "-Pnexus=[true|false]" +
+                  "[-Pmvn-cache-volume=[true|false]]",
           group: PACKAGES_GROUP) doLast {
     def _prefix = project.hasProperty("prefix") ? prefix : "trunk"
     def _OS = project.hasProperty("OS") ? OS : "centos-7"
@@ -659,6 +660,7 @@ def genTasks = { target ->
       logger.warn(_OS + ' requires privileged mode, pass 
`-Pdocker-run-option="--privileged"` to gradle option')
     }
     def _target_pkg = "$target-pkg"
+    def _mvn_cache_volume = project.hasProperty("mvn-cache-volume") ? 
this.'mvn-cache-volume' : ""
     def _docker_run_option = project.hasProperty("docker-run-option") ? 
this.'docker-run-option' : ""
     def additionalConfigKeys = ['git_repo', 'git_ref', 'git_dir', 
'git_commit_hash', 'base_version']
     additionalConfigKeys.each { key ->
@@ -677,6 +679,10 @@ def genTasks = { target ->
     if ( project.hasProperty("nexus") ) {
       command.add('--nexus')
     }
+    if ( project.hasProperty("mvn-cache-volume") ) {
+      command.add('--mvn-cache-volume')
+      command.add(_mvn_cache_volume)
+    }
 
     println "Building $_prefix $_target_pkg on $_OS in Docker...\n"
 

Reply via email to