Skip to main content

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 common section 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:

🚀 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:
  api:
    service_name: arc_api
    build: { context: services/api }
  worker:
    service_name: arc_worker
    build: { context: services/worker }

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 example
  • arc-agent-gateway.yaml - Single service example
  • monorepo/deploy.yaml - Basic monorepo example
  • monorepo/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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

arc_deploy-0.1.0.tar.gz (16.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

arc_deploy-0.1.0-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file arc_deploy-0.1.0.tar.gz.

File metadata

  • Download URL: arc_deploy-0.1.0.tar.gz
  • Upload date:
  • Size: 16.7 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

Hashes for arc_deploy-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7c8fe5563e2aac785251131e8ef83f44188c4ce6a745831ddf8789af6a2a4690
MD5 d167eea29eaaffd1a27d3d32b4ef27c0
BLAKE2b-256 9fb07dcd1d4f51c851b41de201c00018ed43759a5dc1e7c05be2e914c7dbe5ab

See more details on using hashes here.

File details

Details for the file arc_deploy-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: arc_deploy-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.5 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

Hashes for arc_deploy-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e3d5598c064df120751e46e828e16434bd78a60a1431e8937d3894ac71cb4440
MD5 b551368248e0c90a7cd8f49847f0c5c6
BLAKE2b-256 6c68ade8c88078d1c6648aae830137780afc6d48f410dab3f9acde1688b5cb0c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page