LibreChat/.github/workflows
Danny Avila 0bd1a7350f
Some checks are pending
Docker Dev Branch Images Build / build (Dockerfile, lc-dev, node) (push) Waiting to run
Docker Dev Branch Images Build / build (Dockerfile.multi, lc-dev-api, api-build) (push) Waiting to run
GitNexus Index / index (push) Waiting to run
GitNexus Index / post-index (push) Blocked by required conditions
👷 ci: Add API runtime smoke (boot the production image) to docker-smoke (#13605)
* 👷 ci: Add API runtime smoke (boot the production image) to docker-smoke

The docker-smoke workflow only built the `client-package-build` stage and
never booted the runtime, so it couldn't catch the class of regression that
recently took production down: the api tsdown bundle externalizes runtime
deps that, after `npm ci --omit=dev`, were missing from the image
(`Cannot find module 'get-stream'`).

- Add an `api-runtime-smoke` job that builds the real production image
  (final `api-build` stage, `npm ci --omit=dev`), then:
  1. loads the @librechat/api bundle's full require graph in the pruned
     image (deterministic, no DB) — fails on any missing/ESM-incompatible
     runtime dependency.
  2. boots the actual entrypoint and asserts no module-load crash (the
     server loads its require graph before connecting to Mongo, so this
     surfaces without a database).
- Expand triggers to include `packages/api/**`, `packages/data-schemas/**`,
  and `api/package.json` (previously a packages/api change only triggered
  this via a root lockfile change, and even then only built the client stage).
- Add gha build cache + concurrency cancellation to bound CI cost.

* 👷 ci: Address Codex review — boot smoke against real Mongo + crash detection

- Boot the production image against a real MongoDB container with the env
  the server needs, so the *entire* require graph loads. `api/db/connect.js`
  throws at module scope without `MONGO_URI` and is imported before
  models/services/routes, so the previous no-env boot exercised almost none
  of the legacy API graph. (Codex finding 2)
- Gate on `/health` returning 200 AND the container staying alive, failing on
  any container exit. A non-module startup crash (ReferenceError, SyntaxError,
  bad config) now fails the smoke instead of slipping past a missing-module
  grep. (Codex finding 3)
- Expand trigger from `api/package.json` to `api/**`, since the image copies
  the whole `api/` tree and runs `node server/index.js`. (Codex finding 1)

* 👷 ci: Address Codex round 2 — poll /readyz + cover all image inputs

- Poll /readyz instead of /health. /health returns 200 at app.listen, but
  initializeMCPs() and checkMigrations() run *after* listen and process.exit(1)
  on failure; /readyz only returns 200 once serverReady is set after those
  complete. So post-listen startup crashes now fail the smoke too. (finding A)
- Expand triggers to every source tree copied into the production image:
  client/**, config/**, skill/** (the final stage copies client/dist, config,
  and skill). (finding B)
2026-06-08 18:44:52 -04:00
..
a11y.yml 🛡️ chore: Harden CI Supply Chain Workflows (#13090) 2026-05-18 16:55:25 -04:00
backend-review.yml refactor: Migrate data-provider Build to tsdown (split tsc dts) (#13597) 2026-06-08 11:09:16 -04:00
build.yml 🛡️ chore: Harden CI Supply Chain Workflows (#13090) 2026-05-18 16:55:25 -04:00
cache-integration-tests.yml 🐳 chore: Upgrade Docker Builds To Node 24 (#13448) 2026-06-01 10:03:18 -04:00
client.yml 🐳 chore: Upgrade Docker Builds To Node 24 (#13448) 2026-06-01 10:03:18 -04:00
config-review.yml refactor: Migrate data-provider Build to tsdown (split tsc dts) (#13597) 2026-06-08 11:09:16 -04:00
data-provider.yml 🐳 chore: Upgrade Docker Builds To Node 24 (#13448) 2026-06-01 10:03:18 -04:00
data-schemas.yml 🐳 chore: Upgrade Docker Builds To Node 24 (#13448) 2026-06-01 10:03:18 -04:00
deploy-dev.yml 🛡️ chore: Harden CI Supply Chain Workflows (#13090) 2026-05-18 16:55:25 -04:00
deploy.yml 🛡️ chore: Harden CI Supply Chain Workflows (#13090) 2026-05-18 16:55:25 -04:00
dev-branch-images.yml 🆔 feat: Built-in Build Metadata for Support Triage (#12756) 2026-05-23 09:41:13 -04:00
dev-images.yml 🆔 feat: Built-in Build Metadata for Support Triage (#12756) 2026-05-23 09:41:13 -04:00
dev-staging-images.yml 🆔 feat: Built-in Build Metadata for Support Triage (#12756) 2026-05-23 09:41:13 -04:00
docker-smoke.yml 👷 ci: Add API runtime smoke (boot the production image) to docker-smoke (#13605) 2026-06-08 18:44:52 -04:00
eslint-ci.yml 🔧 chore: Update ESLint config, Import Sorting script, Test Sharding, Bump @librechat/agents (#13552) 2026-06-06 12:31:55 -04:00
frontend-review.yml refactor: Migrate @librechat/client build to tsdown (#13596) 2026-06-08 11:20:03 -04:00
generate_embeddings.yml 🛡️ chore: Harden CI Supply Chain Workflows (#13090) 2026-05-18 16:55:25 -04:00
gitnexus-cleanup-pr.yml 🌊 feat: Add GitNexus DigitalOcean Pipeline with PR Index Serving (#12612) 2026-04-11 13:04:46 -04:00
gitnexus-deploy.yml 🩹 fix: Bump GitNexus to 1.6.5 and Fail-Soft the PR Index Job (#13569) 2026-06-07 08:03:28 -04:00
gitnexus-index.yml 🩹 fix: Bump GitNexus to 1.6.5 and Fail-Soft the PR Index Job (#13569) 2026-06-07 08:03:28 -04:00
gitnexus-pr-command.yml 🛡️ chore: Harden CI Supply Chain Workflows (#13090) 2026-05-18 16:55:25 -04:00
helmcharts.yml ⛑️ ci: Fix Helm Tag Sync Workflow Planning (#13451) 2026-06-01 11:44:36 -04:00
i18n-unused-keys.yml 🛡️ chore: Harden CI Supply Chain Workflows (#13090) 2026-05-18 16:55:25 -04:00
locize-i18n-sync.yml 🌎 ci: Fix Locize Sync CDN Mode (#13465) 2026-06-01 21:47:46 -04:00
main-image-workflow.yml 🆔 feat: Built-in Build Metadata for Support Triage (#12756) 2026-05-23 09:41:13 -04:00
playwright-mock.yml refactor: Migrate @librechat/client build to tsdown (#13596) 2026-06-08 11:20:03 -04:00
sync-helm-chart-tags.yml 🏷️ ci: Fix Helm Tag Sync Git Auth (#13460) 2026-06-01 18:32:38 -04:00
tag-images.yml 🆔 feat: Built-in Build Metadata for Support Triage (#12756) 2026-05-23 09:41:13 -04:00
unused-packages.yml 🐳 chore: Upgrade Docker Builds To Node 24 (#13448) 2026-06-01 10:03:18 -04:00