Pārlūkot izejas kodu

Simplify cache save/restore to match OnePlus reference—remove checksums and complex retry logic

TheWildJames 4 mēneši atpakaļ
vecāks
revīzija
190503cdf0

+ 6 - 109
.github/actions/cache-restore/action.yml

@@ -224,116 +224,13 @@ runs:
             EXTRACT_DIR="$(dirname "$CACHE_PATH")"
             
             if [ "$IS_SPLIT" = "true" ]; then
-              mapfile -t PARTS_ARRAY < <(printf '%s\n' "$FINAL_ARCHIVE".part* | sort)
-              if [ ${#PARTS_ARRAY[@]} -eq 0 ] || [ ! -e "${PARTS_ARRAY[0]}" ]; then
-                echo "::error::Split archive parts not found for $FINAL_ARCHIVE"
-                exit 1
-              fi
-              for part_file in "${PARTS_ARRAY[@]}"; do
-                if [ ! -s "$part_file" ]; then
-                  echo "::error::Split archive part is missing or empty: $part_file"
-                  exit 1
-                fi
-              done
-
-              # Create a concatenated archive file but keep parts until extraction succeeds
-              cat "${PARTS_ARRAY[@]}" > "$FINAL_ARCHIVE"
-
-              # Attempt to fetch checksum asset (FILENAME.sha256) and verify before extracting
-              CHECKSUM_FILE="$FINAL_ARCHIVE.sha256"
-              EXPECTED_SUM=""
-              if command -v gh >/dev/null 2>&1; then
-                if gh release view "$TAG_NAME" --repo "$TARGET_REPO" >/dev/null 2>&1; then
-                  if gh release download "$TAG_NAME" --repo "$TARGET_REPO" --pattern "$CHECKSUM_FILE" -D . >/dev/null 2>&1; then
-                    if [ -s "$CHECKSUM_FILE" ]; then
-                      EXPECTED_SUM=$(awk '{print $1}' "$CHECKSUM_FILE" || true)
-                      echo "Found checksum for $FINAL_ARCHIVE: $EXPECTED_SUM"
-                    fi
-                  fi
-                fi
-              fi
-
-              MAX_EXTRACT_ATTEMPTS=3
-              attempt=1
-              extracted=false
-              while [ $attempt -le $MAX_EXTRACT_ATTEMPTS ]; do
-                echo "Attempting extraction (attempt $attempt/$MAX_EXTRACT_ATTEMPTS)"
-
-                # If we have an expected checksum, verify it
-                if [ -n "$EXPECTED_SUM" ]; then
-                  if command -v sha256sum >/dev/null 2>&1; then
-                    ACTUAL_SUM=$(sha256sum "$FINAL_ARCHIVE" | awk '{print $1}') || ACTUAL_SUM=""
-                  else
-                    ACTUAL_SUM=$(openssl dgst -sha256 "$FINAL_ARCHIVE" | awk '{print $2}') || ACTUAL_SUM=""
-                  fi
-                  echo "  actual=$ACTUAL_SUM expected=$EXPECTED_SUM"
-                  if [ -n "$ACTUAL_SUM" ] && [ "$ACTUAL_SUM" != "$EXPECTED_SUM" ]; then
-                    echo "  ⚠️ Checksum mismatch (will re-download parts)"
-                    extracted=false
-                  else
-                    echo "  Checksum OK or not provided, proceeding to extract"
-                    extracted=true
-                  fi
-                else
-                  echo "  No checksum available, proceeding to extraction"
-                  extracted=true
-                fi
-
-                if [ "$extracted" = "true" ]; then
-                  if [ "$COMPRESSED" = "true" ]; then
-                    if tar -I "zstd -d -T0" -xf "$FINAL_ARCHIVE" -C "$EXTRACT_DIR"; then
-                      extracted=true
-                      break
-                    else
-                      extracted=false
-                    fi
-                  else
-                    if tar -xf "$FINAL_ARCHIVE" -C "$EXTRACT_DIR"; then
-                      extracted=true
-                      break
-                    else
-                      extracted=false
-                    fi
-                  fi
-                fi
-
-                echo "Extraction failed (possible truncated download or checksum mismatch)."
-                if [ $attempt -lt $MAX_EXTRACT_ATTEMPTS ]; then
-                  echo "Re-downloading split parts and retrying..."
-                  # remove concatenated before re-download
-                  rm -f "$FINAL_ARCHIVE"
-                  for part_file in "${PARTS_ARRAY[@]}"; do
-                    echo "  Re-downloading $part_file"
-                    rm -f "$part_file"
-                    if ! download_asset "$part_file" "$BASE_URL/$part_file"; then
-                      echo "::error::Failed to re-download $part_file"
-                      exit 1
-                    fi
-                  done
-                  # rebuild concatenated archive
-                  cat "${PARTS_ARRAY[@]}" > "$FINAL_ARCHIVE"
-                  # re-fetch checksum if available
-                  if command -v gh >/dev/null 2>&1; then
-                    rm -f "$CHECKSUM_FILE"
-                    gh release download "$TAG_NAME" --repo "$TARGET_REPO" --pattern "$CHECKSUM_FILE" -D . >/dev/null 2>&1 || true
-                    if [ -s "$CHECKSUM_FILE" ]; then
-                      EXPECTED_SUM=$(awk '{print $1}' "$CHECKSUM_FILE" || true)
-                    else
-                      EXPECTED_SUM=""
-                    fi
-                  fi
-                fi
-                attempt=$((attempt+1))
-              done
-
-              if [ "$extracted" = "false" ]; then
-                echo "::error::Extraction failed after $MAX_EXTRACT_ATTEMPTS attempts. Aborting."
-                exit 1
+              PARTS=$(ls "$FINAL_ARCHIVE.part"* | sort)
+              if [ "$COMPRESSED" = "true" ]; then
+                cat $PARTS | tar -I "zstd -d -T0" -xf - -C "$EXTRACT_DIR"
+              else
+                cat $PARTS | tar -xf - -C "$EXTRACT_DIR"
               fi
-
-              # cleanup parts and final archive after successful extraction
-              rm -f "${PARTS_ARRAY[@]}"
-              rm -f "$FINAL_ARCHIVE"
+              rm -f $PARTS
             else
               if [ "$COMPRESSED" = "true" ]; then
                 tar -I "zstd -d -T0" -xf "$FINAL_ARCHIVE" -C "$EXTRACT_DIR"

+ 4 - 21
.github/actions/cache-save/action.yml

@@ -202,14 +202,6 @@ runs:
           
           FILE_SIZE=$(stat -c%s "$FILENAME")
           echo "Archive created: $FILENAME ($FILE_SIZE bytes)"
-          # Create SHA256 checksum and upload alongside the archive/parts
-          if command -v sha256sum >/dev/null 2>&1; then
-            sha256sum "$FILENAME" | awk '{print $1}' > "$FILENAME.sha256"
-          else
-            # fallback using openssl
-            openssl dgst -sha256 "$FILENAME" | awk '{print $2}' > "$FILENAME.sha256" || true
-          fi
-          echo "Checksum written: $FILENAME.sha256"
           echo "::endgroup::"
           
           echo "::group:: [$((idx+1))/${#PATHS_ARRAY[@]}] Uploading Assets ($CACHE_BUCKET)"
@@ -239,29 +231,20 @@ runs:
             for part in "${FILENAME}".part*; do
               echo "  Uploading $part..."
               if ! upload_with_retry "$part" "$TAG_NAME"; then
-                echo "::warning::Failed to upload part $part after 3 attempts. Continuing with next cache..."
+                echo "::error::Failed to upload part $part after 3 attempts."
+                exit 1
               fi
               rm -f "$part"
             done
-            # Upload checksum for the original archive
-            echo "  Uploading checksum $FILENAME.sha256..."
-            if ! upload_with_retry "$FILENAME.sha256" "$TAG_NAME"; then
-              echo "::warning::Failed to upload checksum $FILENAME.sha256"
-            fi
             rm -rf "$FILENAME"
           else
             echo "  File size: $((FILE_SIZE / 1024 / 1024))MB"
             echo "  Uploading $FILENAME..."
             if ! upload_with_retry "$FILENAME" "$TAG_NAME"; then
-              echo "::warning::Failed to upload $FILENAME after 3 attempts. The cache will not be available for next run."
-            fi
-            # Upload checksum alongside the archive
-            echo "  Uploading checksum $FILENAME.sha256..."
-            if ! upload_with_retry "$FILENAME.sha256" "$TAG_NAME"; then
-              echo "::warning::Failed to upload checksum $FILENAME.sha256"
+              echo "::error::Failed to upload $FILENAME after 3 attempts."
+              exit 1
             fi
             rm -f "$FILENAME"
-            rm -f "$FILENAME.sha256"
           fi
           echo "::endgroup::"
         done