From fcb68cc139430ef642018ebcc64386cc9f2f118d Mon Sep 17 00:00:00 2001 From: George Kalpakas Date: Fri, 8 May 2020 15:33:32 +0300 Subject: [PATCH] fix(docs-infra): better detect failed attempts to update the preview server Docker container (#37015) In order to avoid unnecessary operations, the `update-preview-server.sh` script, that is used to update the PR preview server Docker container, will only try to update the Docker container if either any files in the `aio/aio-builds-setup/` directory have changed since the last update or if a previous update failed. A failed previous update is detected by checking whether the temporary `aio-builds:provisional` Docker image still exists. This temporary image is created during the update operation and is renamed to `aio-builds:latest` if the update goes well. Previously, the update script was not able to detect a previous failed attempt if the operation failed before creating the `aio-builds:provisional` Docker image, such as if the `create-image.sh` script failed. This could lead to a situation where the preview server Docker container would not be updated after a failed attempt. This commit improves the logic for detecting failed attempts to account for this type of failures. It does this by not removing an older `aio-builds:provisional` Docker image until a new one is successfully created. NOTE: While this is not full-proof, it is an improvement as it eliminates a certain kind of failures. PR Close #37015 --- aio/aio-builds-setup/scripts/update-preview-server.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/aio/aio-builds-setup/scripts/update-preview-server.sh b/aio/aio-builds-setup/scripts/update-preview-server.sh index 3bb2bbf27d..122d8064b5 100755 --- a/aio/aio-builds-setup/scripts/update-preview-server.sh +++ b/aio/aio-builds-setup/scripts/update-preview-server.sh @@ -13,7 +13,8 @@ readonly HOST_LOCALCERTS_DIR=$4 readonly HOST_LOGS_DIR=$5 # Constants -readonly PROVISIONAL_IMAGE_NAME=aio-builds:provisional +readonly PROVISIONAL_TAG=provisional +readonly PROVISIONAL_IMAGE_NAME=aio-builds:$PROVISIONAL_TAG readonly LATEST_IMAGE_NAME=aio-builds:latest readonly CONTAINER_NAME=aio @@ -30,7 +31,7 @@ readonly CONTAINER_NAME=aio # Do not update the server unless files inside `aio-builds-setup/` have changed # or the last attempt failed (identified by the provisional image still being around). readonly relevantChangedFilesCount=$(git diff --name-only $lastDeployedCommit...HEAD | grep -P "^aio/aio-builds-setup/" | wc -l) - readonly lastAttemptFailed=$(sudo docker rmi "$PROVISIONAL_IMAGE_NAME" >> /dev/fd/3 && echo "true" || echo "false") + readonly lastAttemptFailed=$(sudo docker image ls | grep "$PROVISIONAL_TAG" >> /dev/fd/3 && echo "true" || echo "false") if [[ $relevantChangedFilesCount -eq 0 ]] && [[ "$lastAttemptFailed" != "true" ]]; then echo "Skipping update because no relevant files have been touched." exit 0