chore(repo): add docker smoke tests
Description
Type of Change
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] Feature (non-breaking change which adds functionality)
- [ ] Improvement (change that would cause existing functionality to not work as expected)
- [ ] Code refactoring
- [ ] Performance improvements
- [ ] Documentation update
Screenshots and Media (if applicable)
Test Scenarios
References
Summary by CodeRabbit
-
New Features
- Introduced a CLI to run local Docker-based smoke tests for web, admin, space, and live apps with configurable ports/paths and selective services.
- Added a build benchmarking tool to compare cold vs warm Docker builds and report timings and image sizes.
-
Tests
- Automated smoke tests in CI run per app via a dynamic matrix based on changed paths, with logs, readiness checks, and automatic cleanup.
-
Chores
- New CI workflow with path-based triggers, conditional execution, concurrency control, and timeouts for reliable PR and push validation.
[!NOTE]
Other AI code review bot(s) detected
CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.
Walkthrough
Adds a Docker smoke-test GitHub Actions workflow that dynamically selects app targets based on changed paths, plus two Bash scripts: one to benchmark Docker builds (cold vs warm) and another to build, run, and probe containerized Next.js apps (web, admin, space, live) with up/down lifecycle and readiness checks.
Changes
| Cohort / File(s) | Summary |
|---|---|
CI: Docker smoke workflow .github/workflows/docker-smoke.yml |
New workflow using dorny/paths-filter to compute a per-app test matrix (web/admin/space/live) and run smoke tests via scripts/smoke.sh; includes triggers, permissions, concurrency, and conditional execution based on changed paths. |
Tooling: Build benchmarkingscripts/bench-builds.sh |
New Bash script to benchmark cold vs warm Docker builds for web/admin/space/live; measures times, image sizes, cache usage; supports pruning modes, verbosity, and service selection. |
Tooling: Smoke test harnessscripts/smoke.sh |
New Bash script to build images, run containers on configured ports, probe readiness URLs, and clean up for web/admin/space/live; supports up/down commands, selective services, and environment overrides. |
Sequence Diagram(s)
sequenceDiagram
autonumber
actor Dev as Developer/PR
participant GA as GitHub Actions
participant PF as paths-filter
participant GS as github-script
participant SM as scripts/smoke.sh
participant DK as Docker
Dev->>GA: Push/PR triggers workflow
GA->>PF: Detect changed paths
PF-->>GA: Changed components map
GA->>GS: Build matrix (targets with config)
alt has_targets
GA->>SM: smoke up (per target)
SM->>DK: build images (DOCKER_BUILDKIT=1)
SM->>DK: run containers (port mapping)
SM->>SM: probe readiness (HTTP 2xx/3xx)
alt failure
SM->>DK: fetch container logs
SM-->>GA: non-zero exit
else success
SM-->>GA: success for target
end
GA->>SM: smoke down (cleanup)
else no targets
GA-->>Dev: Skip smoke job
end
sequenceDiagram
autonumber
actor Eng as Engineer
participant BB as scripts/bench-builds.sh
participant DK as Docker
participant BX as buildx (optional)
Eng->>BB: Run with selected services
BB->>DK: Validate Docker availability
opt prune (unless disabled)
BB->>BX: buildx prune/du (if available)
BB->>DK: docker system prune/df (fallback)
end
loop per service
BB->>DK: Cold build (no-cache) -> time, size
BB->>DK: Warm build (with cache) -> time
end
BB-->>Eng: Summary table (times, sizes, cache notes)
Estimated code review effort
🎯 3 (Moderate) | ⏱️ ~25 minutes
Possibly related PRs
- makeplane/plane#7322 — Adjusts Dockerfile copy paths to apps/*; related because the new scripts/workflow reference Dockerfiles under apps/.
- makeplane/plane#7605 — Modifies apps/live/Dockerfile.live; directly tied to the workflow and scripts that build/run the live image.
Suggested reviewers
- sriramveeraghanta
- prateekshourya29
Poem
I thump my paw: containers rise,
Four apps puff steam beneath the skies.
Smoke says “ready!”—logs say “fine!”
Benchmarks tick in tidy time.
Ports all mapped, the burrow’s bright—
Hop, ship, nibble—green checks tonight! 🐇✨
Pre-merge checks and finishing touches
❌ Failed checks (1 warning)
| Check name | Status | Explanation | Resolution |
|---|---|---|---|
| Description Check | ⚠️ Warning | The pull request description is empty aside from the template placeholders and does not include any of the required information such as a detailed description, selected type of change, test scenarios, or references, making it largely incomplete. | Please fill out the PR description by providing a clear summary of the changes, marking the appropriate type of change, describing the tests performed, and adding any relevant issue or reference links as per the template. |
✅ Passed checks (2 passed)
| Check name | Status | Explanation |
|---|---|---|
| Title Check | ✅ Passed | The pull request title succinctly states the addition of Docker smoke tests and correctly reflects the primary focus of the changes without unnecessary detail or noise. |
| Docstring Coverage | ✅ Passed | No functions found in the changes. Docstring coverage check skipped. |
✨ Finishing touches
🧪 Generate unit tests (beta)
- [ ] Create PR with unit tests
- [ ] Post copyable unit tests in a comment
- [ ] Commit unit tests in branch
feat/docker-frozen-lock
📜 Recent review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📥 Commits
Reviewing files that changed from the base of the PR and between 01dd81cd87628e244be3f771cf9c7a20adc0041b and 8b1d4311d3cc64d5826379048135559b0a795d2a.
📒 Files selected for processing (1)
.github/workflows/docker-smoke.yml(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: Build and smoke test live
- GitHub Check: Build and smoke test admin
- GitHub Check: Build and smoke test space
- GitHub Check: Build and smoke test web
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.
Comment @coderabbitai help to get the list of available commands and usage tips.