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 | ||||
| 
 | ||||
| # 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 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user