process-compose

module
v0.5.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 6, 2022 License: Apache-2.0

README ΒΆ

Process Compose

made-with-Go Linux Maintenance PRs Welcome Go Report

Process compose is a lightweight utility for building custom workflows and execution sequences. It is optimized for:

  • Parallelizing processes execution
  • Defining execution dependencies and order
  • Defining recovery policies (restart on-failure, always, no)
  • Declaring processes arguments
  • Declaring processes environment variables

It is heavily inspired by docker-compose, but without the need for containers. The configuration syntax tries to follow the docker-compose specifications, with a few minor additions and lots of subtractions.

Installation

Documentation

  • See examples of workflows for best practices
  • See below
List of Features and Planned Features
βœ… Mostly implemented
❌ Implementation not started (Your feedback and ⭐ will motivate further development πŸ˜ƒ)
βœ… Launcher
βœ… Parallel
process1:
  command: "sleep 3"
process2:
  command: "sleep 3"
βœ… Serial
process1:
  command: "sleep 3"
  depends_on:
    process2: 
      condition: process_completed_successfully # or "process_completed" if you don't care about errors
process2:
  command: "sleep 3"
  depends_on:
    process3: 
      condition: process_completed_successfully # or "process_completed" if you don't care about errors
❌ Instance Number
βœ… Define process dependencies
process2:
  depends_on:
  process2: 
    condition: process_completed_successfully # or "process_started" (default)
  process3: 
    condition: process_completed_successfully
βœ… Output Handling
βœ… Show process name
βœ… Different colors per process
βœ… StdErr is printed in Red
output
❌ Silence specific processes
βœ… Logger
βœ… Per Process Log Collection
process2:
  log_location: ./pc.process2.log #if undefined or empty no logs will be saved
βœ… Capture StdOut output
βœ… Capture StdErr output
βœ… Merge into a single file
processes:
  process2:
    command: "chmod 666 /path/to/file"
environment:
  - 'ABC=42'
log_location: ./pc.global.log #if undefined or empty no logs will be saved (if also not defined per process)
❌ Silence specific processes
βœ… Process compose console log level
log_level: info # other options: "trace", "debug", "info", "warn", "error", "fatal", "panic"
processes:
  process2:
    command: "chmod 666 /path/to/file"

This setting controls the process-compose log level. The processes log level should be defined inside the process. It is recommended to support its definition with an environment variable that can be defined in process-compose.yaml

❌ Health Checks
❌ Is Alive
❌ Is Ready
❌ Auto Restart if not healthy
βœ… Auto Restart on exit
process2:
  availability:
    restart: on-failure # other options: "always", "no" (default)
    backoff_seconds: 2  # default: 1
    max_restarts: 5 # default: 0 (unlimited)
βœ… Environment Variables
βœ… Per Process
process2:
  environment:
    - 'I_AM_LOCAL_EV=42'
βœ… Global
processes:
  process2:
    command: "chmod 666 /path/to/file"
  environment:
    - 'I_AM_LOCAL_EV=42'		
environment:
  - 'I_AM_GLOBAL_EV=42'
❌ System Variables
❌ Process replica number
❌ Monitoring
❌ REST API
βœ… Configuration
βœ… Support .env file
βœ… Override ${var} and $var from environment variables or .env values
❌ Merge 2 or more configuration files with override values
βœ… Specify which configuration files to use
process-compose -f "path/to/process-compose-file.yaml"
βœ… Auto discover configuration files

The following discovery order is used: compose.yml, compose.yaml, process-compose.yml, process-compose.yaml. If multiple files are present the first one will be used.

❌ Multi-platform
βœ… Linux
❌ Windows
❌ macOS

Directories ΒΆ

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL