Merge stacked PRs: SLIP-71, SLIP-72, SLIP-73#16
Merged
Conversation
Add 'recreate' strategy (stop-old → start-new → health-check → route-update) as alternative to blue-green. Old container is stopped but not removed until new passes health check, enabling fast rollback via restart. - RuntimeBackend trait: add start_container() and stop_container() - DeployStatus: add StoppingOld, RemovingRoute, RestartingOld variants - 3-tier rollback: restart old → recreate from previous_tag → alert - Route removed during downtime (fast 502 > TCP timeout) - Strategy validation: accept 'blue-green' and 'recreate' only - drain_timeout warned (not errored) for recreate - Works for both container and pod deploys - inspect_container_port() added to trait for port re-discovery - 14 new tests (303 total, 0 failures) fix: SLIP-70 nit fixes for DeployStatus variants and rollback_failed field - Add recreate DeployStatus variants to api.rs status handler - Add rollback_failed field to DeployContext in db.rs and test helpers - Update deploy.rs test helpers for new DeployStatus variants fix: add recreate DeployStatus variants to api.rs and db.rs - api.rs: map StoppingOld/RemovingRoute/RestartingOld to status strings - api.rs: use spawn_blocking for SQLite deploy status reads - db.rs: add rollback_failed field to test helpers - deploy.rs: update test helpers for new DeployStatus variants
Add host-path bind mount support for apps that need persistent state
across redeploys. Server config provides host_path, repo config declares
mount_path and read_only. Volumes are injected into both container and
pod deploys.
- VolumeConfig, RepoVolume, MergedVolume structs
- Config merge: match by mount_path, error on missing host_path
- Security blocklist: refuse /, /etc, /proc, /sys, /dev, /boot, /var/run,
/run, Docker/Podman socket and storage paths
- Path traversal protection: canonicalize before blocklist check
- Container deploy: structured Mount API (HostConfig.mounts)
- Pod deploy: inject hostPath volumes into manifest YAML
- Preview isolation: {base}/previews/{id}/ path derivation
- Deploy-time validation in addition to slip validate
- Includes SLIP-71 nit fixes (DeployStatus variants, rollback_failed)
- 42 new tests (345 total, 0 failures)
fix: SLIP-71 nit fixes (DeployStatus variants, rollback_failed field)
- api.rs: map StoppingOld/RemovingRoute/RestartingOld to status strings
- api.rs: use spawn_blocking for SQLite deploy status reads
- db.rs: add rollback_failed field to test helpers
- deploy.rs: update test helpers for new DeployStatus variants
Add 'worker' app kind for background processors, queue consumers, and pipelines that have no HTTP endpoint. Workers skip Caddy route creation, port mapping, and HTTP health checks — using container_is_running() instead. - RoutingConfig.domain and port become Option (backward compatible) - Worker health check = container_is_running() (already on RuntimeBackend) - Docker/Podman skip port binding when container_port == 0 - All deploy paths (blue-green/recreate, container/pod) guard route ops - PreviewState.domain becomes Option<String> for worker previews - Kind field added to AppStatusResponse, AppRuntimeState, PersistedAppState - Kind persisted across daemon restarts - Unknown app kinds now produce validation errors - 4 new tests (349 total, 0 failures)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR merges the stacked branch (slip-73) into main, bringing in:
These were previously merged as stacked PRs (#13 → #14 → #15) but need to be merged into main.