The GitHub Actions job "Required Checks" on texera.git/main has failed. Run started by GitHub user github-merge-queue[bot] (triggered by github-merge-queue[bot]).
Head commit for run: bf9733ffd388634de1fe50710caf16078ce0f6c7 / Yicong Huang <[email protected]> feat(infra): add bin/single-node.sh wrapper for the docker deploy (#5998) ### What changes were proposed in this PR? `bin/single-node/` shipped the docker-compose deploy (compose file, `.env`, examples profile, nginx + litellm config, README) but had no script wrapper. Contributors had to `cd bin/single-node && docker compose up` from a specific directory. After `bin/local-dev.sh` landed for the native dev stack, this left the two deploys with asymmetric UX. Mirror the local-dev shape: a thin `bin/single-node.sh` wrapper plus the engine inside the existing `bin/single-node/` folder. ``` bin/ ├── single-node.sh # 3-line wrapper → bin/single-node/main.sh └── single-node/ ├── main.sh # engine (new) ├── docker-compose.yml (existing) ├── .env (existing) ├── litellm-config.yaml (existing) ├── nginx.conf (existing) ├── examples/ (existing) ├── README.md (existing — Launch / Stop / Uninstall / │ Volume recovery sections updated) └── tests/ └── test_single_node_sh.sh ``` Subcommands are deliberately minimal — the docker deploy doesn't need the `auto` / `-i` TUI / per-service restart machinery the dev tool has: ``` bin/single-node.sh up [--with-examples] docker compose up -d (add --with-examples to also load the examples profile: 2 demo workflows + datasets pre-created on boot) bin/single-node.sh down [--volumes] docker compose --profile examples down (always passes the profile so it cleans up demo containers if they were started; --volumes also drops data volumes — full reset) bin/single-node.sh status (no-arg) docker compose ps + URL/login tip block bin/single-node.sh logs <service> docker compose logs -f <service> bin/single-node.sh --help usage reference ``` Examples profile is **opt-in** — `bin/single-node.sh up` boots the bare stack so a fresh user starts with an empty workspace. Demo content is one flag away. Pre-flight check on `up` / `down` / `status` / `logs`: docker binary on PATH, daemon reachable, compose v2 available, compose file present. Failures exit cleanly with a one-line hint — no stack traces. Argument validation runs **before** the docker pre-flight, so on CI runners without docker installed the arg-error paths are still exercised cleanly. Only `bin/single-node.sh` appears in `--help`, error messages, status-block tips, and the updated README. The engine at `bin/single-node/main.sh` is implementation detail — not surfaced in user-visible text — matching the local-dev convention. ### Any related issues, documentation, discussions? Closes #5996. ### How was this PR tested? * `bash bin/single-node/tests/test_single_node_sh.sh` → `8 passed, 0 failed`. Eight cases: bash-syntax across every `*.sh` under `bin/single-node/`, `--help` output, unknown-subcommand exit code + `--help` hint, `logs` without arg refuses cleanly without leaking the engine path, `down --not-a-real-flag` is rejected, `up --not-a-real-flag` is rejected, `up --with-examples` is accepted by the flag parser, and (when docker isn't running) every `*` subcommand aborts cleanly with a "Docker" hint. * Re-ran the same suite with docker explicitly stripped from `PATH` (mimicking the macOS GitHub Actions runner shape that broke an earlier iteration of this PR) — also `8 passed, 0 failed`. Confirms the arg-validation-before-pre-flight ordering. * End-to-end: * `bin/single-node.sh --help` and `bin/single-node.sh status` (no-arg) render the expected header + URL/login tip block; engine path not surfaced. * `bin/single-node.sh frobnicate` → `unknown subcommand: frobnicate (try \`bin/single-node.sh --help\`)`, exit 1. * `bin/single-node.sh logs` → `usage: bin/single-node.sh logs <service>`, exit 1 (no `main.sh` leak). * Did **not** spin up the actual stack — local machine already has `texera-local-dev` infra holding the same ports / images, so a real `up` would clash. The compose-side behavior is unchanged from before this PR (we're just wrapping the same `docker compose ...` invocations). Smoke test is auto-discovered by the `infra` GitHub Actions job's `find bin -name 'test_*.sh'` step; no workflow edits needed. `bin/**` labeler glob already covers the new files. ### Was this PR authored or co-authored using generative AI tooling? Generated-by: Claude Code (Anthropic, Claude Opus 4.7). Report URL: https://github.com/apache/texera/actions/runs/28340287425 With regards, GitHub Actions via GitBox
