Skip to content

A universal CI/CD workflow orchestrator. Manage GitHub Actions, Jenkins, and GitLab CI from a single interface. Open source, written in Go, built to simplify multi-platform DevOps.

License

Notifications You must be signed in to change notification settings

ignorant05/Uniflow

Repository files navigation

Uniflow

A CLI tool for managing and triggering workflows across multiple CI/CD platforms (GitHub Actions, Jenkins, GitLab CI).

Go Version License Status


Features

  • Multi-Platform Support: GitHub Actions, Jenkins, GitLab CI
  • Secure Configuration: Environment variables and OS keyring integration
  • Profile Management: Separate configs for dev, staging, production
  • Real-Time Log Streaming: Follow workflow execution with colored output
  • Config Validation: Catch errors before running workflows
  • Simple CLI: Easy-to-use commands with helpful error messages

Quick Demo

# Initialize configuration
uniflow init

# List available workflows
uniflow workflows

# Trigger a workflow
uniflow trigger deploy.yml --input environment=prod

# Stream logs in real-time
uniflow logs deploy.yml --follow 

# Check workflow status
uniflow status deploy.yml

Installation

Quick Install

# Clone the repository
git clone https://github.com/ignorant05/uniflow.git
cd uniflow

# Build and install
make build
sudo mv uniflow /usr/local/bin/

# Verify installation
uniflow --version

Using the installation script (Recommended)

curl -fsSL https://raw.githubusercontent.com/ignorant05/uniflow/main/install.sh | sh

#NOTE: Please verify the install.sh script before proceeding with this installation method.

Prerequisites

  • Go 1.24.4 or higher (or docker if you prefer)
  • Git
  • GitHub personal access token (for GitHub Actions)
  • GitLab personal access token
  • Jenkins API token

Quick Start

1. Initialize Configuration

uniflow init

This creates ~/.uniflow/config.yaml with default settings.

2. Set your environment variables

## For github
export GITHUB_TOKEN="ghp_your_token_here" 

## For jenkins
export JENKINS_URL="http://your-jenkins-instance:8080"
export JENKINS_USERNAME="your-username"
export JENKINS_TOKEN="your-api-token-here"

## For gitlab
export GITLAB_TOKEN="your-api-token-here"

Or add to your shell profile (~/.bashrc, ~/.zshrc):

echo 'export GITHUB_TOKEN="ghp_your_token_here"' >> ~/.bashrc (or `~/.zshrc`)
source ~/.bashrc (or `~/.zshrc`)

3. Configure Your Repository

uniflow config set profiles.default.github.default_repo "ignorant05/Uniflow"

4. Verify Configuration

# Listing all configuration for a profile (default)
uniflow config list

# This is needed to validate config
uniflow config validate

5. Trigger Your First Workflow

uniflow trigger deploy.yml --input environment=dev

Documentation

  • Installation Guide - Detailed setup instructions
  • Configuration Guide - Complete config reference
  • Commands Reference - All commands with examples
  • GitHub Actions Guide - GitHub-specific setup
  • Contributing Guide - How to contribute

Common Use Cases

Monitor Deployments

# Trigger deployment
uniflow trigger deploy.yml --input environment=production

# Follow logs in real-time
uniflow logs deploy.yml --follow 

Check Recent Runs

# Show status of all workflows
uniflow status

# Show detailed status for specific workflow
uniflow status deploy.yml --limit 10 --verbose

Debug Failed Runs

# Find failed run
uniflow status deploy.yml

# View logs of specific run
uniflow logs --run-id 123456 --tail 100

Multi-Environment Deployments

# Deploy to staging
uniflow trigger deploy.yml --profile staging --input env=staging

# Deploy to production
uniflow trigger deploy.yml --profile prod --input env=production

Configuration

Basic configuration file (~/.uniflow/config.yaml):

default_platform: github
version: "1.0"

profiles:
  default:
    github:
      token: ${GITHUB_TOKEN}
      default_repo: owner/repo
      base_url: https://api.github.com
    
    jenkins:
      url: https://jenkins.company.com
      username: admin
      token: ${JENKINS_TOKEN}

See Configuration Guide for complete reference.


Available Commands

Command Description Example
init Initialize configuration uniflow init
config Manage configuration uniflow config list
workflows List available workflows uniflow workflows
trigger Trigger a workflow uniflow trigger deploy.yml
status Check workflow status uniflow status deploy.yml
logs View workflow logs uniflow logs deploy.yml --follow

See Commands Reference for detailed commands documentation.


Features Showcase

Real-Time Log Streaming

uniflow logs deploy.yml --follow 
  • Color-coded output (errors in red, success in green)
  • Timestamps for each line
  • Live updates every 3 seconds
  • Graceful Ctrl+C handling

Multi-Profile Support

# Development environment
uniflow trigger deploy.yml --profile dev

# Production environment
uniflow trigger deploy.yml --profile prod

Status Monitoring

uniflow status deploy.yml

Shows:

  • Run number and status
  • Success/failure conclusion
  • Triggered time
  • Direct link to run

Contributing

We welcome contributions! Please see our Contributing Guide for details.

Quick Start for Contributors

# Fork and clone
git clone https://github.com/ignorant05/uniflow.git
cd uniflow

# Install dependencies
make install

# Run tests (don't forget to export your access tokens)
make test

# Build
make build

Troubleshooting

Common Issues

Error: "config file not found"

# Solution: Initialize first
uniflow init

Error: "GitHub token is required"

# Solution: Set environment variable
export GITHUB_TOKEN="ghp_your_token"

Error: "workflow not found"

# Solution: Check available workflows
uniflow workflows

See Installation Guide for more troubleshooting.


Project Status

Current Version: 0.2.0

Supported Platforms:

  • ✅ GitHub Actions (Full support)
  • ✅ Jenkins (Full support)
  • ✅ GitLab CI (Full support)

License

This project is licensed under the MIT License.


Acknowledgments


Contact & Support


⭐ Star History

If you find this project useful, please consider giving it a star!


Contribution

As for contributions, see the contribution guidelines


Made by ignorant05

About

A universal CI/CD workflow orchestrator. Manage GitHub Actions, Jenkins, and GitLab CI from a single interface. Open source, written in Go, built to simplify multi-platform DevOps.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages