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
- Pre-build Hooks: Run custom commands before docker build
- 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
pre_commands:
- pnpm install
- pnpm run build
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)--tag,-t: Custom image tag (optional, defaults to auto-generated tag)--skip-pre-build: Skip build pre-commands--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
# Skip pre-build commands
arc-deploy build-and-deploy --env test --skip-pre-build
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)--skip-pre-build: Skip build pre-commands
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
# Skip pre-build commands
arc-deploy build-only --skip-pre-build
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 |
build.pre_commands |
Pre-build commands (string or list) | 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.
Release files for arc-deploy 0.1.15
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| arc_deploy-0.1.15.tar.gz | 20.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| arc_deploy-0.1.15-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 34.4 kB
Release files / arc_deploy-0.1.15.tar.gz
| Download URL | arc_deploy-0.1.15.tar.gz |
|---|---|
| Size | 20.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
43834a3fe41d593998be8ad129cf0f6eaf91d843a403e9629451617255da1502
|
|
BLAKE2b-256 checksum How to use checksums |
aadbfed86c161bb9bd7759a2213a1787d2fbf85ca806fdf8c7fedbf9ac62ac48
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / arc_deploy-0.1.15-py3-none-any.whl
| Download URL | arc_deploy-0.1.15-py3-none-any.whl |
|---|---|
| Size | 14.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c96ef1e45ac2583eb83626b8ef95478d38b2ebc98b8ac12fe0351c5427592f56
|
|
BLAKE2b-256 checksum How to use checksums |
8a1b7ac72f1f6596dad0edf7e674ce18f47b433ac5a980ff7b13aa414a15f599
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|