Skip to main content

SDCI - Sistema de Deploy Continuo Integrado - Integrated Continuous Deployment System - Sidecar Micro CD

Project description

🚀 SDCI - Sistema de Deploy Continuo Integrado

SDCI (Sistema de Deploy Continuo Integrado - Integrated Continuous Deployment System) is a lightweight continuous deployment system consisting of a server and client tool. It allows you to run predefined tasks remotely through a simple command-line interface.

⚠️ NOTE: This project is currently in ALPHA. A better documentation will be provided soon.

✨ Features

  • Server component built with FastAPI
  • Command-line client tool for easy task execution
  • Token-based authentication
  • Real-time task output streaming
  • Task status monitoring
  • Authenticated single-file upload with progress bar
  • CLI interface to manage tasks

🔩 Architecture Diagram

The ideal way to work with this tool is using the following structure: workflow_structure drawio

For safety purposes, the ideal way to handle such workflow is to protect SDCI connection under a Tailscale or any other VPN connection; Also you can add sdci on the internet, but a reverse proxy is strongly recommended (e.g. Traefik or Nginx)

📥 Installation

Requirements

  • Python 3.13 or higher

Installing the client

The recommended approach is by using pipx;

pipx install sdci

📖 Usage

Starting the server

Run the server component:

python -m src.server

By default, the server runs on 0.0.0.0:8842.

Creating tasks

The server will look up for tasks in the tasks/ directory where you ran this server. It will look for shell scripts on this folder. The job name is the script name without the .sh extension.

Using the client

The client tool can be used to trigger tasks on the server:

sdci-cli run --token YOUR_TOKEN SERVER_URL TASK_NAME [PARAMETERS...]

Example:

sdci-cli run --token HAPPY123 http://localhost:8842 job_1 param1 param2 param3

Parameters

  • --token: Authentication token (required)
  • SERVER_URL: URL of the SDCI server (required)
  • TASK_NAME: Name of the task to run (required)
  • PARAMETERS: Optional parameters to pass to the task

Uploading an asset

You can upload a single file (e.g. a build artifact or archive) to the server. The file is stored under the server's upload directory, inside the relative REMOTE_PATH directory (created recursively), keeping its original filename:

sdci-cli upload-asset --token YOUR_TOKEN SERVER_URL LOCAL_FILE REMOTE_PATH

Example (lands at <upload-dir>/releases/v1/app.zip on the server):

sdci-cli upload-asset --token HAPPY123 http://localhost:8842 ./app.zip releases/v1

Upload notes:

  • The server runs either one task OR one upload at a time (shared global lock); it returns 429 while busy.
  • Path traversal is rejected (400) and an existing destination file is never overwritten (409).
  • A progress bar is shown during upload.

The server's upload directory is configured with the --upload-dir flag (or the UPLOAD_DIR env var, default ./uploads):

sdci-server --upload-dir ./uploads --server-token YOUR_TOKEN --tasks-dir ./tasks

👤 Author

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

sdci-0.7.0.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

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

sdci-0.7.0-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file sdci-0.7.0.tar.gz.

File metadata

  • Download URL: sdci-0.7.0.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for sdci-0.7.0.tar.gz
Algorithm Hash digest
SHA256 6ac8558ebec05ae62dcc241589d1c7d053d52b98f08f7344ba04755c50f2802f
MD5 a6a69a931c05fa65fa74adcb0f745602
BLAKE2b-256 aa7bafffeaa58aa2723721e79bd5c8e847d71aee79c73e029359d24f00aabf3f

See more details on using hashes here.

File details

Details for the file sdci-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: sdci-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for sdci-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d695cbd67a1e86d99e3b699af33c6812e289c6239b629c34c772c133afe12716
MD5 1639035ef08dba877f8932caf095be2d
BLAKE2b-256 644d8451bad71ce34343d2c575b0202130ce1e2c03a978f6094cb1c127b75690

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