Fixes build caching 73/15173/5
authorTim Rozet <trozet@redhat.com>
Fri, 3 Jun 2016 21:19:23 +0000 (17:19 -0400)
committerTim Rozet <trozet@redhat.com>
Sun, 5 Jun 2016 01:28:16 +0000 (21:28 -0400)
JIRA: APEX-167

Change-Id: Ibb9d69eb4326911a5c62fc9f10b02ccf191a3046
Signed-off-by: Tim Rozet <trozet@redhat.com>
build/cache.sh
build/overcloud-onos.sh
ci/build.sh

index 72d0a87..a88ffce 100644 (file)
@@ -35,6 +35,7 @@ function curl_file {
 
 # $1 =  download url
 function populate_cache {
+    local my_md5
     cache_dir
 
     # get the file name
@@ -42,15 +43,25 @@ function populate_cache {
 
     # check if the cache file exists
     # and if it has an md5 compare that
-    echo "Checking cache file: $1"
+    echo "Checking cache file exists: ${filename}"
     if [ ! -f $CACHE_DIR/${filename} ]; then
+        echo "Cache file: ${CACHE_DIR}/${filename} missing...will download..."
         curl_file $1 $filename
     else
+        echo "Cache file exists...comparing MD5 checksum"
         remote_md5="$(curl -sf -L ${1}.md5 | awk {'print $1'})"
         if [ -z "$remote_md5" ]; then
             echo "Got empty MD5 from remote for $filename, skipping MD5 check"
-        elif [ "$remote_md5" != "$(grep ${filename} $CACHE_DIR/.cache | awk {'print $1'})" ]; then
             curl_file $1 $filename
+        else
+            my_md5=$(grep ${filename} $CACHE_DIR/.cache | awk {'print $1'})
+            if [ "$remote_md5" != "$my_md5" ]; then
+                echo "MD5 mismatch: Remote MD5 is ${remote_md5}, Cache file MD5 is ${my_md5}"
+                echo "Downloading $filename"
+                curl_file $1 $filename
+            else
+              echo "Will use cache for ${filename}"
+            fi
         fi
     fi
 }
index 070365d..7922a54 100755 (executable)
@@ -22,10 +22,6 @@ cp -f overcloud-full.qcow2 overcloud-full-onos_build.qcow2
 rm -rf puppet-onos
 git clone https://github.com/bobzhouHW/puppet-onos.git
 populate_cache "$onos_release_uri/$onos_release_file"
-
-# download jdk, onos and maven dependancy packages.
-#for i in jdk-8u51-linux-x64.tar.gz onos-1.3.0.tar.gz repository.tar; do
-
 tar --xform="s:puppet-onos/:onos/:" -czf puppet-onos.tar.gz puppet-onos
 
 LIBGUESTFS_BACKEND=direct virt-customize --install "java-1.8.0-openjdk" \
index e687055..dec7376 100755 (executable)
@@ -99,20 +99,17 @@ if [ -n "$RELEASE" ]; then MAKE_ARGS+="RELEASE=$RELEASE "; fi
 if [ -n "$CACHE_DEST" ]; then
     echo "Retrieving Cache"
     if [ -f $CACHE_DEST/${CACHE_NAME}.tgz ]; then
+        echo "Cache found at ${CACHE_DEST}/${CACHE_NAME}.tgz"
         rm -rf $BUILD_BASE/$CACHE_DIR
-        cp -f $CACHE_DEST/${CACHE_NAME}.tgz $BUILD_BASE/${CACHE_NAME}.tgz
-        tar xzf $BUILD_BASE/${CACHE_NAME}.tgz
+        echo "Unpacking Cache to $BUILD_BASE"
+        tar -xvzf $CACHE_DEST/${CACHE_NAME}.tgz -C ${BUILD_BASE}
+        echo "Cache contents after unpack:"
+        ls -l $BUILD_BASE/$CACHE_DIR
     elif [ ! -d $BUILD_BASE/$CACHE_DIR ]; then
         mkdir $BUILD_BASE/$CACHE_DIR
     fi
 fi
 
-#create build_output for legacy functionality compatibility in jenkins
-if [[ ! -d ../build_output  ]]; then
-    rm -f ../build_output
-    ln -s build/noarch/ ../build_output
-fi
-
 # Conditionally execute RPM build checks if the specs change and target is not rpm or iso
 if [[ "$MAKE_TARGETS" == "images" ]]; then
     commit_file_list=$(git show --pretty="format:" --name-only)
@@ -158,9 +155,12 @@ echo "Build Complete"
 # Build new Cache
 if [ -n "$CACHE_DEST" ]; then
     echo "Building Cache"
-    tar --atime-preserve --dereference -C $BUILD_BASE -caf $BUILD_BASE/${CACHE_NAME}.tgz $CACHE_DIR
-    echo "Copying Cache"
     if [ ! -d $CACHE_DEST ]; then mkdir -p $CACHE_DEST; fi
-    cp $BUILD_BASE/${CACHE_NAME}.tgz $CACHE_DEST/${CACHE_NAME}.tgz
+    tar --atime-preserve --dereference -C $BUILD_BASE -caf $BUILD_BASE/${CACHE_NAME}.tgz $CACHE_DIR -C ${CACHE_DEST}/
+    if [ -f "${CACHE_DEST}/${CACHE_NAME}.tgz" ]; then
+      echo "Cache Build Complete"
+    else
+      echo "WARN: Cache file did not build correctly"
+    fi
 fi
 echo "Complete"