Compare commits
12
Commits
main
...
issue-183-fix
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
72b25c87ac | ||
|
|
931186dc45 | ||
|
|
5abcf55aa7 | ||
|
|
68dcee6968 | ||
|
|
2a92c8766f | ||
|
|
49ad2ff25d | ||
|
|
c487714b63 | ||
|
|
f560d9d921 | ||
|
|
9eba422c67 | ||
|
|
e7d61e8ee1 | ||
|
|
0e9d7c907e | ||
|
|
ae70646ed4 |
@@ -30,11 +30,44 @@ jobs:
|
|||||||
DAGGER_CLIENT_KEY: ${{ secrets.DAGGER_CLIENT_KEY }}
|
DAGGER_CLIENT_KEY: ${{ secrets.DAGGER_CLIENT_KEY }}
|
||||||
run: scripts/setup_dagger_remote.sh
|
run: scripts/setup_dagger_remote.sh
|
||||||
|
|
||||||
|
- name: Locate Docker daemon for local Dagger engine
|
||||||
|
run: |
|
||||||
|
# Skip if remote Dagger engine is already configured (preferred path)
|
||||||
|
if [ -n "${_DAGGER_RUNNER_HOST:-}" ]; then
|
||||||
|
echo "Remote Dagger engine configured, no local Docker needed."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Try host Docker socket (DooD) if runner mounts it
|
||||||
|
if [ -S /var/run/docker.sock ]; then
|
||||||
|
if DOCKER_HOST=unix:///var/run/docker.sock docker info >/dev/null 2>&1; then
|
||||||
|
echo "Docker available via host socket."
|
||||||
|
echo "DOCKER_HOST=unix:///var/run/docker.sock" >> "$GITHUB_ENV"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "WARNING: No remote Dagger engine and no local Docker found." >&2
|
||||||
|
echo " - Remote engine: check DAGGER_STUNNEL_URL secret and that the host proxy is running." >&2
|
||||||
|
echo " - Local Docker: runner does not expose /var/run/docker.sock." >&2
|
||||||
|
echo "CI will likely fail at the Dagger step." >&2
|
||||||
|
|
||||||
|
- name: Prune Dagger cache before check
|
||||||
|
env:
|
||||||
|
DAGGER_NO_NAG: "1"
|
||||||
|
run: dagger query '{ engine { localCache { prune } } }' 2>/dev/null || true
|
||||||
|
|
||||||
- name: Run Full Check Suite
|
- name: Run Full Check Suite
|
||||||
env:
|
env:
|
||||||
DAGGER_NO_NAG: "1"
|
DAGGER_NO_NAG: "1"
|
||||||
run: task check-dagger
|
run: task check-dagger
|
||||||
|
|
||||||
|
- name: Prune Dagger cache after check
|
||||||
|
if: always()
|
||||||
|
env:
|
||||||
|
DAGGER_NO_NAG: "1"
|
||||||
|
run: dagger query '{ engine { localCache { prune } } }' 2>/dev/null || true
|
||||||
|
|
||||||
- name: Cleanup TLS credentials
|
- name: Cleanup TLS credentials
|
||||||
if: always()
|
if: always()
|
||||||
run: rm -rf /tmp/dagger-tls /tmp/stunnel-dagger.conf /tmp/stunnel.pid
|
run: rm -rf /tmp/dagger-tls /tmp/stunnel-dagger.conf /tmp/stunnel.pid
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ jobs:
|
|||||||
run: scripts/setup_dagger_remote.sh
|
run: scripts/setup_dagger_remote.sh
|
||||||
|
|
||||||
- name: Run Android Tests on Firebase Test Lab
|
- name: Run Android Tests on Firebase Test Lab
|
||||||
|
if: ${{ secrets.FIREBASE_TEST_LAB_SERVICE_ACCOUNT_KEY != '' }}
|
||||||
env:
|
env:
|
||||||
FIREBASE_TEST_LAB_SERVICE_ACCOUNT_KEY: ${{ secrets.FIREBASE_TEST_LAB_SERVICE_ACCOUNT_KEY }}
|
FIREBASE_TEST_LAB_SERVICE_ACCOUNT_KEY: ${{ secrets.FIREBASE_TEST_LAB_SERVICE_ACCOUNT_KEY }}
|
||||||
FIREBASE_PROJECT_ID: ${{ vars.FIREBASE_PROJECT_ID }}
|
FIREBASE_PROJECT_ID: ${{ vars.FIREBASE_PROJECT_ID }}
|
||||||
@@ -66,6 +67,7 @@ jobs:
|
|||||||
run: scripts/setup_dagger_remote.sh
|
run: scripts/setup_dagger_remote.sh
|
||||||
|
|
||||||
- name: Publish Android to Play Store
|
- name: Publish Android to Play Store
|
||||||
|
if: ${{ secrets.PLAY_STORE_CONFIG_JSON != '' }}
|
||||||
env:
|
env:
|
||||||
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
|
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
|
||||||
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
|
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
|
||||||
|
|||||||
+6
-1
@@ -284,8 +284,13 @@ tasks:
|
|||||||
for attempt in 1 2 3; do
|
for attempt in 1 2 3; do
|
||||||
run_dagger "$@" && return 0
|
run_dagger "$@" && return 0
|
||||||
RC=$?
|
RC=$?
|
||||||
if [ "$attempt" -lt 3 ] && grep -qE "connection reset|context canceled|connection refused" "$DAGGER_OUT"; then
|
if [ "$attempt" -lt 3 ] && grep -qE "connection reset|context canceled|connection refused|invalid return status code" "$DAGGER_OUT"; then
|
||||||
echo "$(_ts) dagger: network error on attempt $attempt/3, retrying..." >&2
|
echo "$(_ts) dagger: network error on attempt $attempt/3, retrying..." >&2
|
||||||
|
elif [ "$attempt" -lt 3 ] && grep -q "No space left on device" "$DAGGER_OUT"; then
|
||||||
|
echo "$(_ts) dagger: disk space error on attempt $attempt/3, pruning Dagger cache..." >&2
|
||||||
|
dagger query '{ engine { localCache { prune } } }' 2>/dev/null || true
|
||||||
|
echo "$(_ts) dagger: waiting 90s for freed space to settle..." >&2
|
||||||
|
sleep 90
|
||||||
else
|
else
|
||||||
return "$RC"
|
return "$RC"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -14,14 +14,42 @@ if [ "$host" == "$port" ]; then
|
|||||||
port="8774"
|
port="8774"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Probing $host:$port..."
|
MAX_PROBE_ATTEMPTS=5
|
||||||
if ! nc -zw 3 "$host" "$port" 2>/dev/null; then
|
PROBE_DELAY=30
|
||||||
echo "Error: No Dagger server responded on $host:$port"
|
for attempt in $(seq 1 $MAX_PROBE_ATTEMPTS); do
|
||||||
exit 1
|
echo "Probing $host:$port (attempt $attempt/$MAX_PROBE_ATTEMPTS)..."
|
||||||
fi
|
if nc -zw 5 "$host" "$port" 2>/dev/null; then
|
||||||
echo "Found active Dagger server on $host:$port"
|
echo "Found active server on $host:$port"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [ "$attempt" -eq "$MAX_PROBE_ATTEMPTS" ]; then
|
||||||
|
echo "Warning: No Dagger server responded on $host:$port after $MAX_PROBE_ATTEMPTS attempts"
|
||||||
|
echo "Remote engine unavailable — CI will use the local Dagger engine."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo "Dagger server not responding, waiting ${PROBE_DELAY}s before retry..."
|
||||||
|
sleep $PROBE_DELAY
|
||||||
|
done
|
||||||
|
|
||||||
# 2. Setup TLS credentials (passed as env vars from secrets)
|
# 2a. Try plain TCP connection first (works when server is a plain TCP proxy, no TLS)
|
||||||
|
echo "Trying plain TCP Dagger connection at tcp://$host:$port..."
|
||||||
|
if _DAGGER_RUNNER_HOST="tcp://$host:$port" \
|
||||||
|
_EXPERIMENTAL_DAGGER_RUNNER_HOST="tcp://$host:$port" \
|
||||||
|
timeout 8 dagger version >/dev/null 2>&1; then
|
||||||
|
echo "Plain TCP Dagger connection succeeded — no TLS stunnel needed."
|
||||||
|
if [ -n "${GITHUB_ENV:-}" ]; then
|
||||||
|
echo "_EXPERIMENTAL_DAGGER_RUNNER_HOST=tcp://$host:$port" >> "$GITHUB_ENV"
|
||||||
|
echo "_DAGGER_RUNNER_HOST=tcp://$host:$port" >> "$GITHUB_ENV"
|
||||||
|
else
|
||||||
|
export _EXPERIMENTAL_DAGGER_RUNNER_HOST="tcp://$host:$port"
|
||||||
|
export _DAGGER_RUNNER_HOST="tcp://$host:$port"
|
||||||
|
echo "Dagger configured at tcp://$host:$port (plain TCP)"
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo "Plain TCP connection not available; trying TLS stunnel..."
|
||||||
|
|
||||||
|
# 2b. Setup TLS credentials (passed as env vars from secrets)
|
||||||
mkdir -p /tmp/dagger-tls
|
mkdir -p /tmp/dagger-tls
|
||||||
echo "$DAGGER_CA_CERT" > /tmp/dagger-tls/ca.crt
|
echo "$DAGGER_CA_CERT" > /tmp/dagger-tls/ca.crt
|
||||||
echo "$DAGGER_CLIENT_CERT" > /tmp/dagger-tls/client.crt
|
echo "$DAGGER_CLIENT_CERT" > /tmp/dagger-tls/client.crt
|
||||||
|
|||||||
Reference in New Issue
Block a user