Skip to content

pepedinho/fleet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

brain Fleet

Rust

Fleet is a lightweight Rust-based tool for automated repository monitoring and updating. It runs a background daemon (fleetd) that watches your Git repositories, detects remote changes, and executes predefined update commands.

Its goal is to make continuous deployment and synchronization simple without relying on heavy CI/CD pipelines.


brain Summary


brain Features

  • Watch multiple repositories at once
  • Automatically detect new commits on remote branches
  • Execute update scripts when changes are found
  • Per-project logs accessible via CLI
  • Start, stop, and resume repository watches dynamically
  • YAML-based configuration for flexible update workflows
  • Parallel and sequential job execution in pipelines
  • Detect cyclic dependencies in pipeline jobs
  • Optional per-step environment variables and container execution
  • Respect blocking and non-blocking step configuration
  • Notifications on pipeline completion (only discord for now)
  • Statistics overview of watched projects with CPU/memory usage and success/failure counts

brain Quick Start

# Clone the repository
git clone https://github.com/pepedinho/fleet.git
cd fleet

# Install fleet
make install

Add your first project:

fleet watch

brain Commands

Command Description
fleet watch Add a project to the watch list (run inside the project dir) (-b to assign branch)
fleet logs [id|name] Show logs for a project (current dir by default) (-f to follow logs)
fleet ps List watched projects (-a to show stopped projects)
fleet stop <id> Stop watching a project
fleet up <id> Resume watching a stopped project
fleet rm <id> Remove a monitored project
fleet stats Show interactive statistics of all watched projects

brain Configuration

Each project defines its pipelines with a fleet.yml file.

Example fleet.yml:

timeout: 200 # Timeout in seconds for non-blocking commands (default 300)

pipeline:
  notifications:
    on: [success, failure]
    channels:
      - type: discord
        url: https://discord.com/api/webhooks/...

  jobs:
    build:
      steps:
        - cmd: cargo build

    test_rust:
      needs: [build]
      env:
        RUST_LOG: debug
      steps:
        - cmd: cargo test

    echo_test:
      needs: [build]
      steps:
        - cmd: echo test 1
          container: ubuntu:latest

    deploy:
      needs: [test_rust, echo_test]
      steps:
        - cmd: echo "deploy complete"
          blocking: true
Workflow Exemple
         New commit detected
                 │
                 ▼
               +-----+
               |build|
               +--+--+
                  │
      ┌-----------┴-----------┐
      ▼                       ▼
 +-----------+           +-----------+
 | test_rust |           | echo_test |
 +-----------+           +-----------+
      │                       │
      └-----------┬-----------┘
                  ▼
              +--------+
              | deploy |
              +--------+
                  │
          ┌-------┴---------┐
          ▼                 ▼
  +---------------+    +---------+
  | Notifications |    |  Stats  |
  +---------------+    +---------+

Key Points:

  • timeout → global timeout for async jobs (default 300s).
  • needs → define dependencies between jobs.
  • blocking: true → fire and forget.
  • env → per-step environment variables.
  • container → run step in Docker container.
  • notifications → external alerts (success/failure).

brain How It Works

Detailed workflow
  1. fleetd runs in the background and periodically checks repositories.

  2. When a new commit is detected:

    • Jobs are executed respecting dependencies.
    • Independent jobs run in parallel.
    • Failures propagate and block dependent jobs.
    • Cyclic dependencies are detected and reported before execution.
    • Environment variables and containers are supported per step.
    • Notifications are sent to configured channels (Discord, webhook, etc.).
  3. Logs for each project are stored and retrievable via fleet logs.

  4. Global statistics are available via fleet stats.


About

fleet is a little CD orchestrator build in rust

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •