Skip to content

Commit 4d743f4

Browse files
committed
Windows: Ensure Docker engine is running
When running a swift_package_tests.yaml workflow, workflows running in a docker container on windows would often fails as the docker engine was not currently ready to accept requests. Add a step that ensure the docker engine is ready, by calling `docker info` before performing any other docker steps.
1 parent f84da04 commit 4d743f4

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

.github/workflows/swift_package_test.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,30 @@ jobs:
750750
foreach ($line in $lines) {
751751
echo $line | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
752752
}
753+
- name: Ensure Docker engine is ready
754+
if: ${{ inputs.enable_windows_docker }}
755+
run: |
756+
# Wait for Docker to be ready
757+
$maxRetries = 30
758+
$retryCount = 0
759+
while ($retryCount -lt $maxRetries) {
760+
try {
761+
docker info | Out-Null
762+
if ($LASTEXITCODE) {
763+
throw "docker engine is not ready"
764+
}
765+
Write-Host "Docker engine is ready"
766+
break
767+
} catch {
768+
$retryCount++
769+
Write-Host "Waiting for Docker engine to be ready... ($retryCount/$maxRetries)"
770+
Start-Sleep -Seconds 2
771+
}
772+
}
773+
if ($retryCount -eq $maxRetries) {
774+
Write-Error "Docker engine failed to start"
775+
exit 1
776+
}
753777
- name: Pull Docker image
754778
id: pull_docker_image
755779
if: ${{ inputs.enable_windows_docker }}

0 commit comments

Comments
 (0)