ci: add stack smoke test (daily + on PRs)#11
Conversation
Adds .github/workflows/smoke-test.yml, the repo's first CI. It proves the full Docker Compose stack still launches cleanly: - daily schedule, to catch upstream ":latest" image drift - on PRs touching launch-relevant files (compose, scripts, config, .env.example) - on demand via workflow_dispatch The job reuses scripts/generate-env.sh (non-interactive; LLM keys default to "user_provided", so no repo secrets are needed), runs `docker compose up -d --wait`, then probes the LibreChat, Langfuse, Admin Panel, and ClickHouse MCP endpoints. Diagnostics are dumped on failure and the stack is always torn down. A failed daily run opens/updates a de-duped tracking issue. Verified locally: stack reaches healthy state and all probes pass. Closes #10 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Adds the repository’s first GitHub Actions CI workflow to smoke-test that the full Docker Compose stack boots to a healthy state and responds on key HTTP endpoints, running daily, on relevant PR changes, and manually.
Changes:
- Introduces a new
Stack smoke testworkflow withschedule,pull_request(paths-filtered), andworkflow_dispatchtriggers. - Brings up the full compose stack with
docker compose up -d --wait, then probes LibreChat/Langfuse/Admin Panel/MCP endpoints. - On scheduled-run failures, attempts to open/update a de-duped tracking issue via
actions/github-script.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- invoke generate-env.sh via bash (don't rely on the executable bit) - gate report-daily-failure on needs.smoke-test.result explicitly - skip PRs when finding the tracking issue (listForRepo returns both) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
@codex review |
|
@codex review attempt 2 |
|
@codex review 3 |
|
@codex review 4 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c5cbf8de23
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Co-authored-by: Dustin Healy <54083382+dustinhealy@users.noreply.github.com>
- fix probe: failed curl emitted '000' then '|| echo 000' appended a second,
making code='000000' so the mode=any (MCP) probe passed even when the port
was unreachable; use a single fallback (|| true + ${code:-000})
- ensure the smoke-test-failure label exists before searching/applying, so
de-dupe is reliable on the first failure in a fresh repo
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Closes #10
What
Adds
.github/workflows/smoke-test.yml— the repo's first CI. It proves the full Docker Compose stack still launches cleanly, on three triggers:cron) — catches upstream:latestimage drift*compose*.yml,scripts/**,librechat.yaml, the example files,.env.example, the workflow itself)How
scripts/generate-env.sh(non-interactive; LLM keys default touser_provided) → no repo secrets required.docker compose up -d --wait --wait-timeout 600— the core "comes up cleanly" assertion: every healthchecked service must be healthy.:3080(200), Langfuse:3000(200), Admin Panel:3081(200), ClickHouse MCP:8000(any response — auth-gated).docker compose ps -a+ logs. Always:docker compose down -v.smoke-test-failuretracking issue (PR failures just show as a red check).Verification
Ran the full CI path locally before pushing:
docker compose up -d --waitreturned exit 0 — all 14 services healthy/running, and--waithandled the one-shotlibrechat-user-initcontainer without hanging.This PR itself touches the workflow file, so the
pull_requesttrigger will run it live here.🤖 Generated with Claude Code