@@ -124,40 +124,67 @@ jobs:
124124 continue-on-error : true
125125 run : |
126126 set -euo pipefail
127- download_httpcomponents_tarball() {
127+ download_maven_jar() {
128+ local group_path="$1"
129+ local artifact="$2"
130+ local version="$3"
131+ local output="$4"
132+ DOWNLOAD_ATTEMPTS=3 \
133+ DOWNLOAD_CONNECT_TIMEOUT=30 \
134+ DOWNLOAD_MAX_TIME=180 \
135+ DOWNLOAD_RETRY_DELAY=5 \
136+ DOWNLOAD_WGET_TIMEOUT=60 \
137+ DOWNLOAD_WGET_WAITRETRY=5 \
138+ bash .github/scripts/download-with-fallback.sh "$output" \
139+ "https://repo.maven.apache.org/maven2/${group_path}/${artifact}/${version}/${artifact}-${version}.jar" \
140+ "https://repo1.maven.org/maven2/${group_path}/${artifact}/${version}/${artifact}-${version}.jar"
141+ }
142+ resolve_parent_property() {
128143 local version="$1"
129- local output="$2"
130- shift 2
131- local urls=("$@")
144+ local property="$2"
145+ local parent_pom="$WORKDIR/httpclient5-parent-${version}.pom"
132146 DOWNLOAD_ATTEMPTS=3 \
133- DOWNLOAD_CONNECT_TIMEOUT=45 \
134- DOWNLOAD_MAX_TIME=480 \
147+ DOWNLOAD_CONNECT_TIMEOUT=30 \
148+ DOWNLOAD_MAX_TIME=120 \
135149 DOWNLOAD_RETRY_DELAY=5 \
136- DOWNLOAD_WGET_TIMEOUT=90 \
150+ DOWNLOAD_WGET_TIMEOUT=60 \
137151 DOWNLOAD_WGET_WAITRETRY=5 \
138- bash .github/scripts/download-with-fallback.sh "$output" "${urls[@]}"
152+ bash .github/scripts/download-with-fallback.sh "$parent_pom" \
153+ "https://repo.maven.apache.org/maven2/org/apache/httpcomponents/client5/httpclient5-parent/${version}/httpclient5-parent-${version}.pom" \
154+ "https://repo1.maven.org/maven2/org/apache/httpcomponents/client5/httpclient5-parent/${version}/httpclient5-parent-${version}.pom"
155+ python3 - "$parent_pom" "$property" <<'PY'
156+ import re
157+ import sys
158+ text = open(sys.argv[1], encoding="utf-8").read()
159+ prop = re.escape(sys.argv[2])
160+ match = re.search(rf"<{prop}>([^<]+)</{prop}>", text)
161+ if not match:
162+ raise SystemExit(f"missing parent property: {sys.argv[2]}")
163+ print(match.group(1))
164+ PY
165+ }
166+ install_from_maven_central() {
167+ local version="$1"
168+ local root="$2"
169+ local lib_dir="$root/lib"
170+ mkdir -p "$lib_dir"
171+ local core_version
172+ local slf4j_version
173+ core_version=$(resolve_parent_property "$version" "httpcore.version")
174+ slf4j_version=$(resolve_parent_property "$version" "slf4j.version")
175+ download_maven_jar "org/apache/httpcomponents/client5" "httpclient5" "$version" "$lib_dir/httpclient5-${version}.jar"
176+ download_maven_jar "org/apache/httpcomponents/core5" "httpcore5" "$core_version" "$lib_dir/httpcore5-${core_version}.jar"
177+ download_maven_jar "org/apache/httpcomponents/core5" "httpcore5-h2" "$core_version" "$lib_dir/httpcore5-h2-${core_version}.jar"
178+ download_maven_jar "org/slf4j" "slf4j-api" "$slf4j_version" "$lib_dir/slf4j-api-${slf4j_version}.jar"
139179 }
140180 WORKDIR=$(mktemp -d)
141- TARBALL="$WORKDIR/httpcomponents-client-${CURRENT_VERSION}-bin.tar.gz"
142- if ! download_httpcomponents_tarball "$CURRENT_VERSION" "$TARBALL" \
143- "https://archive.apache.org/dist/httpcomponents/httpclient/binary/httpcomponents-client-${CURRENT_VERSION}-bin.tar.gz" \
144- "http://archive.apache.org/dist/httpcomponents/httpclient/binary/httpcomponents-client-${CURRENT_VERSION}-bin.tar.gz" \
145- "https://downloads.apache.org/httpcomponents/httpclient/binary/httpcomponents-client-${CURRENT_VERSION}-bin.tar.gz"; then
146- echo "current_version=$CURRENT_VERSION" >> "$GITHUB_OUTPUT"
147- echo "install_status=failed" >> "$GITHUB_OUTPUT"
148- echo "install_blocker=baseline_download_failed" >> "$GITHUB_OUTPUT"
149- exit 0
150- fi
151- if ! tar -xzf "$TARBALL" -C "$WORKDIR"; then
181+ HC_HOME="$WORKDIR/httpcomponents-client-${CURRENT_VERSION}"
182+ if ! install_from_maven_central "$CURRENT_VERSION" "$HC_HOME"; then
152183 echo "current_version=$CURRENT_VERSION" >> "$GITHUB_OUTPUT"
153184 echo "install_status=failed" >> "$GITHUB_OUTPUT"
154- echo "install_blocker=baseline_extract_failed " >> "$GITHUB_OUTPUT"
185+ echo "install_blocker=baseline_maven_artifact_download_failed " >> "$GITHUB_OUTPUT"
155186 exit 0
156187 fi
157- HC_HOME=$(find "$WORKDIR" -maxdepth 2 -type d -name "httpcomponents-client-${CURRENT_VERSION}" | head -n 1)
158- if [ -z "$HC_HOME" ]; then
159- HC_HOME=$(dirname "$(dirname "$(find "$WORKDIR" -name 'httpclient5-*.jar' ! -name '*tests*' | head -n 1)")")
160- fi
161188 if [ -z "$HC_HOME" ] || [ ! -d "$HC_HOME/lib" ]; then
162189 echo "current_version=$CURRENT_VERSION" >> "$GITHUB_OUTPUT"
163190 echo "install_status=failed" >> "$GITHUB_OUTPUT"
@@ -359,18 +386,60 @@ jobs:
359386 echo "duration=$((END_TIME - START_TIME))" >> "$GITHUB_OUTPUT"
360387 exit 0
361388 fi
362- download_httpcomponents_tarball () {
363- local version ="$1"
364- local output ="$2"
365- shift 2
366- local urls=("$@")
389+ download_maven_jar () {
390+ local group_path ="$1"
391+ local artifact ="$2"
392+ local version="$3"
393+ local output="$4"
367394 DOWNLOAD_ATTEMPTS=3 \
368- DOWNLOAD_CONNECT_TIMEOUT=45 \
369- DOWNLOAD_MAX_TIME=480 \
395+ DOWNLOAD_CONNECT_TIMEOUT=30 \
396+ DOWNLOAD_MAX_TIME=180 \
370397 DOWNLOAD_RETRY_DELAY=5 \
371- DOWNLOAD_WGET_TIMEOUT=90 \
398+ DOWNLOAD_WGET_TIMEOUT=60 \
372399 DOWNLOAD_WGET_WAITRETRY=5 \
373- bash .github/scripts/download-with-fallback.sh "$output" "${urls[@]}"
400+ bash .github/scripts/download-with-fallback.sh "$output" \
401+ "https://repo.maven.apache.org/maven2/${group_path}/${artifact}/${version}/${artifact}-${version}.jar" \
402+ "https://repo1.maven.org/maven2/${group_path}/${artifact}/${version}/${artifact}-${version}.jar"
403+ }
404+ resolve_parent_property() {
405+ local workdir="$1"
406+ local version="$2"
407+ local property="$3"
408+ local parent_pom="$workdir/httpclient5-parent-${version}.pom"
409+ DOWNLOAD_ATTEMPTS=3 \
410+ DOWNLOAD_CONNECT_TIMEOUT=30 \
411+ DOWNLOAD_MAX_TIME=120 \
412+ DOWNLOAD_RETRY_DELAY=5 \
413+ DOWNLOAD_WGET_TIMEOUT=60 \
414+ DOWNLOAD_WGET_WAITRETRY=5 \
415+ bash .github/scripts/download-with-fallback.sh "$parent_pom" \
416+ "https://repo.maven.apache.org/maven2/org/apache/httpcomponents/client5/httpclient5-parent/${version}/httpclient5-parent-${version}.pom" \
417+ "https://repo1.maven.org/maven2/org/apache/httpcomponents/client5/httpclient5-parent/${version}/httpclient5-parent-${version}.pom"
418+ python3 - "$parent_pom" "$property" <<'PY'
419+ import re
420+ import sys
421+ text = open(sys.argv[1], encoding="utf-8").read()
422+ prop = re.escape(sys.argv[2])
423+ match = re.search(rf"<{prop}>([^<]+)</{prop}>", text)
424+ if not match:
425+ raise SystemExit(f"missing parent property: {sys.argv[2]}")
426+ print(match.group(1))
427+ PY
428+ }
429+ install_from_maven_central() {
430+ local version="$1"
431+ local root="$2"
432+ local workdir="$3"
433+ local lib_dir="$root/lib"
434+ mkdir -p "$lib_dir"
435+ local core_version
436+ local slf4j_version
437+ core_version=$(resolve_parent_property "$workdir" "$version" "httpcore.version")
438+ slf4j_version=$(resolve_parent_property "$workdir" "$version" "slf4j.version")
439+ download_maven_jar "org/apache/httpcomponents/client5" "httpclient5" "$version" "$lib_dir/httpclient5-${version}.jar"
440+ download_maven_jar "org/apache/httpcomponents/core5" "httpcore5" "$core_version" "$lib_dir/httpcore5-${core_version}.jar"
441+ download_maven_jar "org/apache/httpcomponents/core5" "httpcore5-h2" "$core_version" "$lib_dir/httpcore5-h2-${core_version}.jar"
442+ download_maven_jar "org/slf4j" "slf4j-api" "$slf4j_version" "$lib_dir/slf4j-api-${slf4j_version}.jar"
374443 }
375444
376445 echo "latest_version=$LATEST" >> "$GITHUB_OUTPUT"
@@ -391,26 +460,17 @@ jobs:
391460 fi
392461
393462 NEXT_DIR=$(mktemp -d)
394- NEXT_TAR="$NEXT_DIR/httpcomponents-client-${LATEST}-bin.tar.gz"
395- if ! download_httpcomponents_tarball "$LATEST" "$NEXT_TAR" \
396- "https://dlcdn.apache.org/httpcomponents/httpclient/binary/httpcomponents-client-${LATEST}-bin.tar.gz" \
397- "https://downloads.apache.org/httpcomponents/httpclient/binary/httpcomponents-client-${LATEST}-bin.tar.gz" \
398- "https://archive.apache.org/dist/httpcomponents/httpclient/binary/httpcomponents-client-${LATEST}-bin.tar.gz" \
399- "http://archive.apache.org/dist/httpcomponents/httpclient/binary/httpcomponents-client-${LATEST}-bin.tar.gz"; then
463+ NEXT_HOME="$NEXT_DIR/httpcomponents-client-${LATEST}"
464+ if ! install_from_maven_central "$LATEST" "$NEXT_HOME" "$NEXT_DIR"; then
400465 echo "next_installed_version=install_failed" >> "$GITHUB_OUTPUT"
401466 echo "decision=next_install_failed" >> "$GITHUB_OUTPUT"
402467 echo "regression_result=Next version install failed on Arm64" >> "$GITHUB_OUTPUT"
403- echo "comparison=Current pinned Apache HttpComponents Client version ${CURRENT} passed smoke tests in this run, but candidate version ${LATEST} could not be downloaded from the official Apache distribution mirrors ." >> "$GITHUB_OUTPUT"
468+ echo "comparison=Current pinned Apache HttpComponents Client version ${CURRENT} passed smoke tests in this run, but candidate version ${LATEST} could not be downloaded from official Maven Central repositories ." >> "$GITHUB_OUTPUT"
404469 echo "status=failed" >> "$GITHUB_OUTPUT"
405470 END_TIME=$(date +%s)
406471 echo "duration=$((END_TIME - START_TIME))" >> "$GITHUB_OUTPUT"
407472 exit 1
408473 fi
409- tar -xzf "$NEXT_TAR" -C "$NEXT_DIR"
410- NEXT_HOME=$(find "$NEXT_DIR" -maxdepth 2 -type d -name "httpcomponents-client-${LATEST}" | head -n 1)
411- if [ -z "$NEXT_HOME" ]; then
412- NEXT_HOME=$(dirname "$(dirname "$(find "$NEXT_DIR" -name 'httpclient5-*.jar' ! -name '*tests*' | head -n 1)")")
413- fi
414474 NEXT_JAR=$(find "$NEXT_HOME/lib" -name 'httpclient5-[0-9]*.jar' | head -n 1)
415475 NEXT_REPORTED=$(basename "$NEXT_JAR" | sed -E 's/^httpclient5-([0-9A-Za-z.\-]+)\.jar$/\1/')
416476 javac -cp "$NEXT_HOME/lib/*" TestHttpClient.java
0 commit comments