Skip to content

refactor: the observability services run in every stack, so local and production start the same services - #456

Merged
HardMax71 merged 1 commit into
mainfrom
max/drop-observability-profile
Oct 23, 2026
Merged

HardMax71 merged 1 commit into
mainfrom
max/drop-observability-profile

Conversation

@HardMax71

@HardMax71 HardMax71 commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner

Summary

Production's .env set COMPOSE_PROFILES=observability, so production ran Grafana, Loki, OpenSearch, VictoriaMetrics, Jaeger and both collectors while a local stack ran without them unless asked. That was a behavior difference between local and production deploys, where only keys and credentials should differ. Follows #455.

Changes

The eight observability services lose profiles: ["observability"], so docker compose up -d starts them everywhere, and the deploy stops writing COMPOSE_PROFILES. Compose leaves profiles out of its config hash (hash.go), so the release recreates nothing on production. Kafdrop stays under the debug profile, since production never runs it. CI's E2E stacks now start the observability services too. The docs drop the profile everywhere.

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Refactoring (no functional changes)
  • CI/CD or tooling changes

Test Plan

  • Backend unit tests pass (cd backend && uv run pytest tests/unit)
  • Frontend unit tests pass (cd frontend && npm run test)
  • Backend E2E tests pass (docker compose exec -T backend sh -c 'uv sync --group test --no-dev --frozen --no-install-project --no-build && pytest tests/e2e')
  • Frontend E2E tests pass (cd frontend && npm run test:e2e)
  • API spec and client regenerated if routes or schemas changed (uv run python -m scripts.export_openapi in backend/, then npm run generate:api in frontend/), never edited by hand
  • Manual testing performed

Validation: docker compose config --services lists the observability services with no profile set and Kafdrop only with --profile debug, and mkdocs build --strict passes.

Checklist

  • My code follows the project's style guidelines
  • I have run pre-commit run --all-files and all checks pass
  • I have added tests that prove my fix/feature works
  • I have updated documentation if needed
  • My changes don't introduce new warnings

Summary by cubic

Makes the observability services part of every compose stack, so local and production now start the same services: Grafana, Jaeger, Loki, OpenSearch, VictoriaMetrics, and both OTel collectors come up with docker compose up -d.

Changes

  • Removes the observability profile from all eight services; production's deploy no longer writes COMPOSE_PROFILES=observability.
  • Compose leaves profiles out of its config hash, so the production release recreates no containers.
  • Kafdrop stays under the debug profile, and CI's E2E stacks now start the observability services.
  • Documentation drops every mention of the profile.

Written for commit c317bc4. Summary will update on new commits.

View guided diff Turn on auto-fix

… production start the same services

Production's .env set COMPOSE_PROFILES=observability and local stacks ran without Grafana, Loki, OpenSearch, VictoriaMetrics, Jaeger and the collectors unless asked. The profile goes, the deploy no longer writes COMPOSE_PROFILES, and Kafdrop stays under the debug profile. Compose leaves profiles out of its config hash, so the release recreates nothing.
@HardMax71
HardMax71 enabled auto-merge (squash) October 23, 2026 18:29
@coderabbitai

coderabbitai Bot commented Oct 23, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 5a758577-f937-4b91-964b-e714bb278100
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added documentation Improvements or additions to documentation area: deploy Compose, images, release workflow, production host area: ci GitHub workflows, test infrastructure, repo tooling labels Oct 23, 2026
@sonarqubecloud

Copy link
Copy Markdown

@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Flag Coverage Δ
backend-e2e 82.04% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
Backend 94.73% <ø> (ø)
Frontend 92.25% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@HardMax71
HardMax71 merged commit 5f94d95 into main Oct 23, 2026
23 checks passed
@HardMax71
HardMax71 deleted the max/drop-observability-profile branch October 23, 2026 18:45
HardMax71 added a commit that referenced this pull request Oct 23, 2026
…the observability services

No E2E test uses Grafana, Loki, OpenSearch, VictoriaMetrics, Jaeger or the collectors. Since #456 the E2E jobs pulled their 4 GB of images too: the pull grew from 22 s to 49 s and the stack waited about 25 s on it, plus 13 s more startup.
HardMax71 added a commit that referenced this pull request Oct 23, 2026
… and E2E skips Playwright's apt step and the observability images (#457)

* fix(ci): each uv job keeps its own cache, Playwright skips its apt step, and grype's database is cached

All backend jobs shared one setup-uv key, so the first job to finish (bandit only) saved a 3 MB cache and the others downloaded CPython and every wheel on each run; each job now saves its own cache with the managed Python. The Playwright browser cache follows the browser builds in playwright-core's browsers.json instead of the whole package-lock.json, and the install-deps step goes: on the runner image it only adds fonts no test uses, and its apt download stalled two runs for more than 6 minutes. The SBOM scan restores grype's vulnerability database from a cache keyed on the checksum of the newest database, instead of spending about 80 s downloading and unpacking it in each job.

* fix(ci): E2E pulls and starts only the app and its dependencies, not the observability services

No E2E test uses Grafana, Loki, OpenSearch, VictoriaMetrics, Jaeger or the collectors. Since #456 the E2E jobs pulled their 4 GB of images too: the pull grew from 22 s to 49 s and the stack waited about 25 s on it, plus 13 s more startup.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci GitHub workflows, test infrastructure, repo tooling area: deploy Compose, images, release workflow, production host documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants