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
This commit is contained in:
parent
01d1c1a9ab
commit
fcb68cc139
|
@ -13,7 +13,8 @@ readonly HOST_LOCALCERTS_DIR=$4
|
||||||
readonly HOST_LOGS_DIR=$5
|
readonly HOST_LOGS_DIR=$5
|
||||||
|
|
||||||
# Constants
|
# 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 LATEST_IMAGE_NAME=aio-builds:latest
|
||||||
readonly CONTAINER_NAME=aio
|
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
|
# 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).
|
# 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 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
|
if [[ $relevantChangedFilesCount -eq 0 ]] && [[ "$lastAttemptFailed" != "true" ]]; then
|
||||||
echo "Skipping update because no relevant files have been touched."
|
echo "Skipping update because no relevant files have been touched."
|
||||||
exit 0
|
exit 0
|
||||||
|
|
Loading…
Reference in New Issue