diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 3afc472..73b22a6 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -70,12 +70,24 @@ jobs: run: | image="$(printf '%s\n' "$PUBLISHED_TAGS" | head -n 1)" docker pull "$image" - docker run -d --rm -p 3000:3000 --name budget2-ci "$image" + docker run -d --rm --name budget2-ci "$image" trap 'docker stop budget2-ci' EXIT - for i in $(seq 1 30); do - if curl -fsS http://localhost:3000/ > /dev/null; then break; fi - sleep 1 - done - curl -fsS http://localhost:3000/ | grep -q "Budget" - curl -fsS http://localhost:3000/sw.js > /dev/null - curl -fsS http://localhost:3000/manifest.webmanifest > /dev/null + docker exec budget2-ci bun -e ' + const base = "http://127.0.0.1:3000"; + let ready = false; + for (let attempt = 0; attempt < 30; attempt++) { + try { + const response = await fetch(base + "/"); + if (response.ok && (await response.text()).includes("Budget")) { + ready = true; + break; + } + } catch {} + await Bun.sleep(1000); + } + if (!ready) throw new Error("App did not serve its HTML"); + for (const path of ["/sw.js", "/manifest.webmanifest"]) { + const response = await fetch(base + path); + if (!response.ok) throw new Error(`${path} returned ${response.status}`); + } + '