Skip to content

ci: add stack smoke test (daily + on PRs)#11

Merged
graphaelli merged 6 commits into
mainfrom
feat/smoke-test-ci
Jun 10, 2026
Merged

ci: add stack smoke test (daily + on PRs)#11
graphaelli merged 6 commits into
mainfrom
feat/smoke-test-ci

Conversation

@graphaelli

@graphaelli graphaelli commented Jun 9, 2026

Copy link
Copy Markdown
Member

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:

  • daily schedule (cron) — catches upstream :latest image drift
  • pull_request touching launch-relevant files (*compose*.yml, scripts/**, librechat.yaml, the example files, .env.example, the workflow itself)
  • workflow_dispatch (manual)

How

  1. Reuse scripts/generate-env.sh (non-interactive; LLM keys default to user_provided) → no repo secrets required.
  2. docker compose up -d --wait --wait-timeout 600 — the core "comes up cleanly" assertion: every healthchecked service must be healthy.
  3. HTTP probes (curl-with-retry): LibreChat :3080 (200), Langfuse :3000 (200), Admin Panel :3081 (200), ClickHouse MCP :8000 (any response — auth-gated).
  4. On failure: dump docker compose ps -a + logs. Always: docker compose down -v.
  5. A failed daily run opens/updates a de-duped smoke-test-failure tracking issue (PR failures just show as a red check).

Verification

Ran the full CI path locally before pushing:

  • docker compose up -d --wait returned exit 0 — all 14 services healthy/running, and --wait handled the one-shot librechat-user-init container without hanging.
  • All four endpoint probes passed (LibreChat/Langfuse/Admin 200, MCP 404 = listening).

This PR itself touches the workflow file, so the pull_request trigger will run it live here.

🤖 Generated with Claude Code

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>
Comment thread .github/workflows/smoke-test.yml Outdated
Comment thread .github/workflows/smoke-test.yml Outdated
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Comment thread .github/workflows/smoke-test.yml Outdated
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 test workflow with schedule, pull_request (paths-filtered), and workflow_dispatch triggers.
  • 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.

Comment thread .github/workflows/smoke-test.yml
Comment thread .github/workflows/smoke-test.yml Outdated
Comment thread .github/workflows/smoke-test.yml
Comment thread .github/workflows/smoke-test.yml Outdated
- 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>
@graphaelli graphaelli requested a review from dustinhealy June 9, 2026 21:02
@dustinhealy

Copy link
Copy Markdown
Contributor

@codex review

@dustinhealy

Copy link
Copy Markdown
Contributor

@codex review attempt 2

@dustinhealy

dustinhealy commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

@codex review 3

@dustinhealy

Copy link
Copy Markdown
Contributor

@codex review 4

Comment thread .github/workflows/smoke-test.yml Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread .github/workflows/smoke-test.yml Outdated
Comment thread .github/workflows/smoke-test.yml
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>
@graphaelli graphaelli merged commit a58b819 into main Jun 10, 2026
2 checks passed
@graphaelli graphaelli deleted the feat/smoke-test-ci branch June 10, 2026 13:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add a smoke test that the stack comes up cleanly (daily + on PRs)

3 participants