Skip to content

fix: repair collabora e2e healthcheck and backend CVE gate - #10

Open
melindavandijke wants to merge 37 commits into
mainfrom
fix-ci-failures
Open

melindavandijke wants to merge 37 commits into
mainfrom
fix-ci-failures

Conversation

@melindavandijke

@melindavandijke melindavandijke commented Aug 11, 2026

Copy link
Copy Markdown

Purpose

Two of the CI workflows on main were failing on every push/PR:

  • Frontend Workflow — all test-e2e jobs (firefox, webkit) timed out waiting for Docker services to become healthy.
  • Docker Hub Workflowbuild-and-push-backend failed the trivy vulnerability gate.

Proposal

  • compose.yaml: the collabora/code:latest image no longer ships a shell (hardened build), so the existing exec-based healthcheck (bash -c '... /dev/tcp/...') can never succeed even though coolwsd itself is up and healthy. app-dev's dependency on collabora is switched from service_healthy to service_started, which is what was causing the
    dependency failed to start: container drive-collabora-1 is unhealthy timeout in test-e2e.
  • src/backend/pyproject.toml / uv.lock: bump cryptography (49.0.0 → 50.0.0, CVE-2026-69247) and pillow (12.2.0 → 12.3.0, several DoS/heap CVEs) past the HIGH-severity vulnerabilities trivy flagged.
  • .trivyignore (new) + .github/workflows/docker-hub.yml: ignore CVE-2025-47273 (setuptools) and GHSA-6v7p-g79w-8964 (msgpack). Both are only referenced in pip's own vendored CycloneDX SBOM (pip/_vendor/bom.cdx.json) — neither package is actually installed in the built image (import setuptools / import msgpack both fail), and the issue is still present in the latest pip release (26.2.1), so it's not something fixable from our side.

Verified locally by building the backend-production target and running trivy against it directly: 0 HIGH/CRITICAL findings with .trivyignore applied (exit code 0).

Summary by CodeRabbit

  • Security

    • Improved vulnerability scanning by documenting confirmed false positives.
    • Updated minimum versions for key image-processing, packaging, and encryption dependencies.
  • Reliability

    • Simplified development startup checks for the Collabora integration to accommodate its hardened container image.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Review Change Stack

Important

  • 🔍 Trigger review

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

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: c607e821-bf4a-4ea4-952d-b8325adfa9d7

📝 Walkthrough

Walkthrough

The changes update Python dependency minimums, configure Trivy vulnerability exclusions, and change Collabora development startup to rely on service start status instead of an executable health check.

Changes

Security and runtime configuration

Layer / File(s) Summary
Dependency security constraints
src/backend/pyproject.toml
Pillow and cryptography minimum versions increased. A setuptools minimum was added. Vulnerability annotations were updated.
Trivy vulnerability exclusions
.trivyignore, .github/workflows/docker-hub.yml
The backend Trivy scan now uses .trivyignore, which excludes two documented vulnerabilities in pip’s vendored dependencies.
Collabora startup readiness
compose.yaml
app-dev now waits for Collabora to start. The shell-based HTTP health check was removed because the hardened image lacks the required tools.

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested reviewers: kernicpanel

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes both primary changes: the Collabora healthcheck fix and the backend CVE gate updates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix-ci-failures

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.

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.trivyignore:
- Around line 1-9: Replace the global CVE/GHSA entries in .trivyignore with
scoped entries in .trivyignore.yaml that target only the affected pip vendored
paths or package PURLs and include an explicit expiration date. Preserve the
exceptions for the intended pip vendored packages without suppressing findings
for other locations.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 3704bdaf-9a49-400b-8a22-c9ef204b3a3b

📥 Commits

Reviewing files that changed from the base of the PR and between 3cbbfc9 and ee172cb.

⛔ Files ignored due to path filters (1)
  • src/backend/uv.lock is excluded by !**/*.lock
📒 Files selected for processing (4)
  • .github/workflows/docker-hub.yml
  • .trivyignore
  • compose.yaml
  • src/backend/pyproject.toml

Comment thread .trivyignore Outdated
Alevale and others added 24 commits September 8, 2026 01:01
- Updated logos and branding from alpha to beta version
- Added language selector back to the main screen
- Change image names from lasuite/* to mosacloud/*
- Add latest and version tags on main branch push
- Read version from package.json (frontend) and pyproject.toml (backend)
- Remove notify-argocd job from docker-hub.yml (using Flux instead)
- Delete crowdin_download.yml and crowdin_upload.yml (not using Crowdin)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add new mosa login page

* chore: center mosa logo
Stale FRONTEND_THEME values (default/anct/dark) resolved to base themes
with no favicon token, crashing the app on theme rename. Alias them.
* refactor: align app switcher panel with calendars implementation

* fix: correct Dutch and French app switcher translations

* fix: correct appswitcher translations
Rebase Agent added 8 commits September 8, 2026 10:33
…mer workflows

test-back and test-e2e restored the cache under a different key than
build-mails saved it under, causing a silent cache miss and
TemplateDoesNotExist failures once the old (accidentally matching)
cache entry expired.
Publishes to a gh-pages branch that only exists on the upstream repo,
not on the mosa fork, so every run fails with "pathspec 'gh-pages' did
not match any file(s)". Already removed on the other mosa apps; only
kept reappearing here because it only triggers on src/helm/** changes.
The collabora healthcheck fix in an earlier commit already works (verified
by building the image and checking docker's health status directly), so
downgrading app-dev's dependency to service_started was an unnecessary
workaround that let e2e tests start against a collabora container that
isn't ready yet. Also pin the unpinned numerique-gouv/action-trivy-cache@main
ref this branch's trivyignores wiring depends on, since it has no version
tags and could change behavior without notice.
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.

5 participants