diff --git a/builders/container-apps-internal-registry-demo/Dockerfile b/builders/container-apps-internal-registry-demo/Dockerfile index 25c019a2dc..1135ce721d 100644 --- a/builders/container-apps-internal-registry-demo/Dockerfile +++ b/builders/container-apps-internal-registry-demo/Dockerfile @@ -38,6 +38,7 @@ RUN set -eux; \ sudo \ curl \ unzip \ + grep \ ; \ rm -rf /var/lib/apt/lists/* diff --git a/builders/container-apps-internal-registry-demo/startup-script.sh b/builders/container-apps-internal-registry-demo/startup-script.sh index e2b68588c6..07aa7c74e2 100644 --- a/builders/container-apps-internal-registry-demo/startup-script.sh +++ b/builders/container-apps-internal-registry-demo/startup-script.sh @@ -11,6 +11,7 @@ file_upload_endpoint="$FILE_UPLOAD_CONTAINER_URL/$FILE_UPLOAD_BLOB_NAME" temp_app_source_dir="/tmp/appsource" temp_app_source_path="$temp_app_source_dir/$FILE_UPLOAD_BLOB_NAME" +temp_app_header_path="$temp_app_source_dir/header.txt" mkdir $temp_app_source_dir # List all the environment variables and filter the environment variable with prefix "ACA_CLOUD_BUILD_USER_ENV_", then write them to folder "/platform/env", @@ -25,13 +26,24 @@ done # write environment variable CORRELATION_ID to folder "/platform/env", if [ -n "$CORRELATION_ID" ]; then - echo "$CORRELATION_ID" > "$build_env_dir/CORRELATION_ID" + echo -n "$CORRELATION_ID" > "$build_env_dir/CORRELATION_ID" fi +file_extension="" while [[ ! -f "$temp_app_source_path" || ! "$(file $temp_app_source_path)" =~ "compressed data" ]] do echo "Waiting for app source to be uploaded. Please upload the app source to the endpoint specified in the Build resource's 'uploadEndpoint' property." - curl -H "$auth_header" -H "$version_header" -H "$date_header" -X GET "$file_upload_endpoint" -o "$temp_app_source_path" -s + curl -H "$auth_header" -H "$version_header" -H "$date_header" -X GET "$file_upload_endpoint" -o "$temp_app_source_path" -D "$temp_app_header_path" -s + if [[ -f "$temp_app_header_path" ]]; then + file_extension=$(grep -i x-ms-meta-FileExtension "$temp_app_header_path" | cut -d ' ' -f2) + # Check if the original file extension is .jar, .war, .zip or .tar.gz + if [[ "$file_extension" =~ ".tar.gz" + || "$file_extension" =~ ".jar" + || "$file_extension" =~ ".war" + || "$file_extension" =~ ".zip" ]]; then + break + fi + fi sleep 5 done @@ -39,7 +51,15 @@ done echo "Found app source at '$temp_app_source_path'. Extracting to $CNB_APP_DIR" mkdir -p $CNB_APP_DIR cd $CNB_APP_DIR -tar -xzf "$temp_app_source_path" + +if [[ "$file_extension" =~ ".jar" + || "$file_extension" =~ ".war" + || "$file_extension" =~ ".zip" ]]; then + unzip -qq "$temp_app_source_path" +else +# Keep compatibility with old logic + tar -xzf "$temp_app_source_path" +fi fileCount=$(ls | wc -l) if [ "$fileCount" = "1" ]; then