Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -22,6 +22,9 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Wait for Docker daemon
|
||||||
|
run: bash scripts/ensure-docker-daemon.sh 240
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,9 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
echo "tag=sha-${SHA:0:12}" >> "$GITHUB_OUTPUT"
|
echo "tag=sha-${SHA:0:12}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Wait for Docker daemon
|
||||||
|
run: bash scripts/ensure-docker-daemon.sh 240
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ jobs:
|
|||||||
echo "sha_tag=sha-${GITHUB_SHA::12}" >> "$GITHUB_OUTPUT"
|
echo "sha_tag=sha-${GITHUB_SHA::12}" >> "$GITHUB_OUTPUT"
|
||||||
echo "release_tag=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT"
|
echo "release_tag=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Wait for Docker daemon
|
||||||
|
run: bash scripts/ensure-docker-daemon.sh 240
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v2
|
uses: docker/setup-buildx-action@v2
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Ensure Docker daemon is reachable on WSL host runner (Docker Desktop integration).
|
||||||
|
# Usage: ensure-docker-daemon.sh [max_wait_seconds]
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
MAX_WAIT="${1:-240}"
|
||||||
|
INTERVAL=5
|
||||||
|
DEADLINE=$((SECONDS + MAX_WAIT))
|
||||||
|
|
||||||
|
docker_ok() {
|
||||||
|
timeout 8 docker info >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
find_docker_host() {
|
||||||
|
local candidates=(
|
||||||
|
"${DOCKER_HOST:-}"
|
||||||
|
"unix:///var/run/docker.sock"
|
||||||
|
"unix:///mnt/wsl/docker-desktop/shared-sockets/guest-services/docker.sock"
|
||||||
|
"unix:///mnt/wsl/docker-desktop/shared-sockets/guest-services/docker.proxy.sock"
|
||||||
|
"unix:///mnt/wsl/docker-desktop/shared-sockets/guest-services/docker.container-proxy.sock"
|
||||||
|
)
|
||||||
|
local host path
|
||||||
|
for host in "${candidates[@]}"; do
|
||||||
|
[[ -n "${host}" ]] || continue
|
||||||
|
path="${host#unix://}"
|
||||||
|
if [[ -S "${path}" ]] && DOCKER_HOST="${host}" docker_ok; then
|
||||||
|
export DOCKER_HOST="${host}"
|
||||||
|
echo "Docker ready (${host})"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if docker_ok; then
|
||||||
|
echo "Docker ready (default socket)"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
start_docker_desktop() {
|
||||||
|
local exe="/mnt/c/Program Files/Docker/Docker/Docker Desktop.exe"
|
||||||
|
if [[ -f "${exe}" ]]; then
|
||||||
|
echo "Starting Docker Desktop..."
|
||||||
|
powershell.exe -NoProfile -Command "Start-Process 'C:\\Program Files\\Docker\\Docker\\Docker Desktop.exe'" >/dev/null 2>&1 || true
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
echo "Docker Desktop executable not found"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
attempt=0
|
||||||
|
while (( SECONDS < DEADLINE )); do
|
||||||
|
attempt=$((attempt + 1))
|
||||||
|
if find_docker_host; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if (( attempt == 1 || attempt == 7 )); then
|
||||||
|
start_docker_desktop || true
|
||||||
|
fi
|
||||||
|
echo "waiting for docker (${attempt}, $((DEADLINE - SECONDS))s left)..."
|
||||||
|
sleep "${INTERVAL}"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Docker daemon not available after ${MAX_WAIT}s"
|
||||||
|
echo "Hint: start Docker Desktop on Windows and enable WSL integration."
|
||||||
|
exit 1
|
||||||
Reference in New Issue
Block a user