feat: implement remote build support and archive creation for deployments

- Added a new `create_archive` function to generate a tarball of the project source, including handling of .dockerignore patterns.
- Enhanced the `deploy` function to support remote builds, allowing deployment without local Docker availability.
- Introduced a `--remote` option in the CLI to control remote build behavior.
- Updated the HostBackendClient with methods for requesting upload URLs and updating deployments with source tarballs.
This commit is contained in:
David Asamu
2026-03-11 16:08:13 +00:00
parent 19db4d2b23
commit 0c850a5baa
4 changed files with 590 additions and 97 deletions
+17
View File
@@ -45,6 +45,23 @@ def _parse_version(version: str) -> Version:
)
def is_docker_available() -> bool:
"""Check if Docker is installed and running without raising."""
if shutil.which("docker") is None:
return False
try:
import subprocess
result = subprocess.run(
["docker", "info"],
capture_output=True,
timeout=10,
)
return result.returncode == 0
except Exception:
return False
def check_capabilities(
runner, *, require_compose: bool = True, require_buildx: bool = False
) -> DockerCapabilities: