|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +set -euo pipefail |
| 4 | + |
| 5 | +# Input variables |
| 6 | +BASE_URL="$1" # e.g., 100.64.101.1:9990 |
| 7 | +BRANCH="$2" |
| 8 | +REVISION="$3" |
| 9 | +PLATFORM="$4" |
| 10 | +BBNUM="$5" |
| 11 | +DIR="$6" # Directory containing .xml files |
| 12 | + |
| 13 | +UPLOAD_URL="http://${BASE_URL}/upload-test-results/" |
| 14 | +HEALTH_URL="http://${BASE_URL}/health" |
| 15 | + |
| 16 | +# Step 1: Health check before uploads |
| 17 | +echo "Checking service health at $HEALTH_URL..." |
| 18 | +if ! curl "$HEALTH_URL" \ |
| 19 | + --max-time 5 \ |
| 20 | + --retry 3 \ |
| 21 | + --retry-max-time 0 \ |
| 22 | + --retry-delay 5 \ |
| 23 | + --retry-connrefused \ |
| 24 | + --fail-with-body > /dev/null; then |
| 25 | + echo "Service health check failed. Aborting uploads." |
| 26 | + exit 1 |
| 27 | +fi |
| 28 | +echo "Service is healthy. Proceeding with uploads." |
| 29 | + |
| 30 | +# Step 2: Validate directory |
| 31 | +if [[ ! -d "$DIR" ]]; then |
| 32 | + echo "Error: directory '$DIR' does not exist" |
| 33 | + exit 1 |
| 34 | +fi |
| 35 | + |
| 36 | +# Step 3: Find XML files |
| 37 | +shopt -s nullglob |
| 38 | +XML_FILES=("$DIR"/*.xml) |
| 39 | +shopt -u nullglob |
| 40 | + |
| 41 | +if [[ ${#XML_FILES[@]} -eq 0 ]]; then |
| 42 | + echo "Error: no .xml files found in directory '$DIR'" |
| 43 | + exit 1 |
| 44 | +fi |
| 45 | + |
| 46 | +# Step 4: Upload files and track failures |
| 47 | +ANY_FAILED=0 |
| 48 | + |
| 49 | +for FILE in "${XML_FILES[@]}"; do |
| 50 | + # Extract filename without extension for 'typ' |
| 51 | + BASENAME="$(basename "$FILE" .xml)" |
| 52 | + echo "Uploading $FILE (typ=$BASENAME)..." |
| 53 | + |
| 54 | + if ! curl --max-time 120 --connect-timeout 10 --fail-with-body \ |
| 55 | + -X POST "$UPLOAD_URL" \ |
| 56 | + -F "branch=${BRANCH}" \ |
| 57 | + -F "revision=${REVISION}" \ |
| 58 | + -F "platform=${PLATFORM}" \ |
| 59 | + -F "bbnum=${BBNUM}" \ |
| 60 | + -F "typ=${BASENAME}" \ |
| 61 | + -F "file=@${FILE};type=application/xml"; then |
| 62 | + echo "Upload failed for $FILE" |
| 63 | + ANY_FAILED=1 |
| 64 | + else |
| 65 | + echo "Upload succeeded for $FILE" |
| 66 | + fi |
| 67 | +done |
| 68 | + |
| 69 | +# Step 5: Final result |
| 70 | +if [[ $ANY_FAILED -ne 0 ]]; then |
| 71 | + echo "One or more uploads failed." |
| 72 | + exit 1 |
| 73 | +else |
| 74 | + echo "All uploads succeeded." |
| 75 | + exit 0 |
| 76 | +fi |
0 commit comments