Unified deployment CLI tool for Docker Swarm with monorepo support
Project description
Arc Deploy CLI
A unified CLI tool for building and deploying Docker services to the Deploy Controller. Supports both single-service and monorepo architectures with configuration-driven deployments.
Features
- Single Service & Monorepo Support: Deploy one service or manage multiple services from a single configuration
- Configuration Inheritance: Shared settings via
commonsection in monorepo configs - Unique Image Tagging: Automatic tag generation using Git SHA and timestamp
- Flexible Deployment Options: Build only, build+push, or full deployment workflow
- Real-time Monitoring: Track deployment progress and status
📚 Documentation
Full documentation is available in the docs/ directory or served via MkDocs:
- Overview - Installation and basic usage
- Monorepo Guide - Configuring monorepo deployments
- Publishing Guide - How to publish the CLI package
- Package Info - Package structure and metadata
🚀 Quick Start
Installation
# Install via pip
pip install arc-deploy
# Or using uv
uv pip install arc-deploy
Single Service Configuration
Create deploy.yaml in your project root:
service_name: my_service
ecr_registry: 123.dkr.ecr.us-west-2.amazonaws.com
deploy_controller_url: https://deploy.example.com
aws_region: us-west-2
build:
dockerfile: Dockerfile
context: .
build_args:
NODE_ENV: production
Deploy:
export WEBHOOK_TOKEN="your-token"
arc-deploy build-and-deploy --env test
Monorepo Configuration
Create deploy.yaml at repository root:
common:
ecr_registry: 123.dkr.ecr.us-west-2.amazonaws.com
deploy_controller_url: https://deploy.example.com
aws_region: us-west-2
services:
# 简化版本:不指定 service_name,使用 key 作为默认值
api:
build: { context: services/api }
worker:
build: { context: services/worker }
# 完整版本:指定不同的 service_name(用于不同的 Docker 服务名)
api-gateway:
service_name: arc_api_gateway # 可选:如果未指定,使用 key (api-gateway)
build: { context: services/api-gateway }
Deploy:
# List available services
arc-deploy list-services
# Deploy specific service(s)
arc-deploy build-and-deploy --env test --service api
arc-deploy build-and-deploy --env prod --service api,worker
# Deploy all services
arc-deploy build-and-deploy --env test --all
Commands
build-and-deploy
Build Docker image, push to ECR, and deploy via Deploy Controller.
Options:
--env,-e: Deployment environment (test/prod) - Required--config,-c: Configuration file path (default:deploy.yaml)--service,-s: Service name(s) for monorepo (comma-separated or multiple flags)--all: Deploy all services (monorepo only)--skip-push: Build only, skip push and deploy--skip-deploy: Build and push only, skip deployment
Examples:
# Single service
arc-deploy build-and-deploy --env test
# Monorepo - specific service
arc-deploy build-and-deploy --env test --service api
# Monorepo - multiple services
arc-deploy build-and-deploy --env prod --service api,worker
# Build only (no push/deploy)
arc-deploy build-and-deploy --env test --skip-push
validate-config
Validate the deployment configuration file.
Options:
--config,-c: Configuration file path (default:deploy.yaml)
Example:
arc-deploy validate-config
build-only
Build Docker image only (no push or deploy).
Options:
--config,-c: Configuration file path (default:deploy.yaml)--service,-s: Service name for monorepo--tag,-t: Custom image tag (optional, defaults to auto-generated tag)
Examples:
# Single service
arc-deploy build-only
# Monorepo
arc-deploy build-only --service api
# With custom tag
arc-deploy build-only --tag v1.0.0
list-services
List all services in a monorepo configuration.
Options:
--config,-c: Configuration file path (default:deploy.yaml)
Example:
arc-deploy list-services
Environment Variables
WEBHOOK_TOKEN: Bearer token for Deploy Controller webhook authentication (required for deployments)AWS_PROFILE: AWS profile name (or use standard AWS environment variables)AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY: AWS credentials (if not using profile)
Configuration Reference
| Field | Description | Required |
|---|---|---|
service_name |
Service name in Deploy Controller | Yes |
ecr_registry |
ECR repository URL | Yes |
deploy_controller_url |
Base URL of Deploy Controller | Yes |
aws_region |
AWS region for ECR | Yes |
image_name |
Docker image name (defaults to service_name) |
No |
build.dockerfile |
Path to Dockerfile (default: Dockerfile) |
No |
build.context |
Build context path (default: .) |
No |
build.build_args |
Dictionary of build arguments | No |
For monorepo configurations, see the Monorepo Guide for details on common and services sections.
Examples
Example configurations are available in the examples/ directory:
arc-nodejs-service.yaml- Single service examplearc-agent-gateway.yaml- Single service examplemonorepo/deploy.yaml- Basic monorepo examplemonorepo/deploy-fullstack.yaml- Fullstack app example
Development
For local development, install in editable mode:
cd cli
uv pip install -e .
License
MIT License - see LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file arc_deploy-0.1.4.tar.gz.
File metadata
- Download URL: arc_deploy-0.1.4.tar.gz
- Upload date:
- Size: 18.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.15 {"installer":{"name":"uv","version":"0.9.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e8d14da59e117bdbb8b9c3dc82530478e86b7bc8486cbc3f389b53a7007999b2
|
|
| MD5 |
b17093d715b60eb49593cbf2053e1d31
|
|
| BLAKE2b-256 |
963e7dfbc9e7ee87a758e00d538a666510fa973367156c330b900a05c2d59a3a
|
File details
Details for the file arc_deploy-0.1.4-py3-none-any.whl.
File metadata
- Download URL: arc_deploy-0.1.4-py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.15 {"installer":{"name":"uv","version":"0.9.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
881f3538a2ded204f721943ea37abc8bfbc965fa87ad8368906d7ad59bf751bc
|
|
| MD5 |
dff3d714ebdcaafd1cc0e2d5ac766805
|
|
| BLAKE2b-256 |
f25e4f0dfe107c86a173ab1fb87c4e9f7d128b9bf72e828c30eb4816bdd21db0
|