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:
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
429while 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
- Jonhnatha Trigueiro joepreludian@gmail.com
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ac8558ebec05ae62dcc241589d1c7d053d52b98f08f7344ba04755c50f2802f
|
|
| MD5 |
a6a69a931c05fa65fa74adcb0f745602
|
|
| BLAKE2b-256 |
aa7bafffeaa58aa2723721e79bd5c8e847d71aee79c73e029359d24f00aabf3f
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d695cbd67a1e86d99e3b699af33c6812e289c6239b629c34c772c133afe12716
|
|
| MD5 |
1639035ef08dba877f8932caf095be2d
|
|
| BLAKE2b-256 |
644d8451bad71ce34343d2c575b0202130ce1e2c03a978f6094cb1c127b75690
|