@@ -18,22 +18,41 @@ jobs:
1818 with :
1919 project_id : dummy-project
2020 install_components : ' beta'
21+ - name : Install Java & netcat (required by emulator)
22+ run : |
23+ sudo apt-get update
24+ # Datastore emulator requires a JRE on the runner
25+ sudo apt-get install -y default-jre-headless netcat-openbsd
26+ java -version || true
27+ - name : Install Datastore emulator component
28+ run : |
29+ # Ensure the datastore emulator component is installed in Cloud SDK
30+ gcloud --quiet components install cloud-datastore-emulator || true
31+ echo "gcloud components:" && gcloud components list || true
32+
2133 - name : Start Datastore Emulator
2234 run : |
23- gcloud beta emulators datastore start --host-port=localhost:8010 --project=dummy-project &
24- sleep 10
35+ # Start emulator in background and capture logs for debugging
36+ gcloud beta emulators datastore start --host-port=127.0.0.1:8010 --project=dummy-project > emu.log 2>&1 &
37+ # Give the emulator a bit more time to initialize before polling
38+ sleep 15
2539 - name : Wait for Datastore Emulator to be ready
2640 run : |
27- for i in {1..30}; do
28- if nc -z localhost 8010; then
41+ # Poll for the listening port, printing the last lines of the emulator log each loop for diagnostics
42+ for i in {1..60}; do
43+ if nc -z 127.0.0.1 8010; then
2944 echo "Datastore emulator is up!"
3045 break
3146 fi
3247 echo "Waiting for emulator... ($i)"
48+ echo "--- emu.log (tail) ---"
49+ tail -n 100 emu.log || true
3350 sleep 1
3451 done
35- if ! nc -z localhost 8010; then
52+ if ! nc -z 127.0.0.1 8010; then
3653 echo "Emulator did not start in time!" >&2
54+ echo "Full emulator log:" >&2
55+ cat emu.log >&2 || true
3756 exit 1
3857 fi
3958 - name : Set environment variables
0 commit comments