Skip to main content

EEveon - Lightweight CI/CD Pipeline

A bash-based continuous deployment system that automatically deploys code from GitHub to your production server.

Features

  • 🚀 Automatic Deployment - Polls GitHub every 2 minutes for new commits
  • Dashboard (v0.4.0): Real-time web management UI with live logs and remote controls.
  • Multi-Node: Deploy to a cluster of servers from a single command.
  • Blue-Green Deployments: Atomic traffic switching for zero downtime.
  • 🔐 Encrypted Secrets - Securely manage environment variables using AES-128 encryption
  • 🤝 Manual Approvals - Pause deployments for critical environments until authorized
  • 📊 RBAC & Auth - Role-based access control for multiple users
  • 🪝 Post-Deploy Hooks - Run custom scripts after deployment
  • 📝 Comprehensive Logging - Track all deployments with automatic rotation
  • 📦 System Health - Diagnostic tool to ensure server readiness

Installation

git clone https://github.com/adarsh-crypto/eeveon.git
cd eeveon
./install.sh
source ~/.bashrc

Quick Start

1. Initialize a Pipeline

eeveon init \
  --repo https://github.com/username/repo.git \
  --name myproject \
  --path /var/www/myproject \
  --branch main

2. Configure (Optional)

cd ~/Desktop/github/eeveon/deployments/myproject

# Create .deployignore
cat > .deployignore << EOF
.git
node_modules
*.log
EOF

# Create .env
cat > .env << EOF
NODE_ENV=production
DATABASE_URL=postgresql://localhost/db
EOF

# Create post-deploy hook
mkdir -p hooks
cat > hooks/post-deploy.sh << 'EOF'
#!/bin/bash
npm install --production
pm2 restart myapp
EOF
chmod +x hooks/post-deploy.sh

3. Start Monitoring

eeveon start myproject -f  # Run in foreground
# OR
eeveon start myproject     # Get systemd service instructions

CLI Commands

Command Description
eeveon init Initialize a new deployment pipeline
eeveon list List all configured pipelines
eeveon start <project> Start monitoring a pipeline
eeveon stop <project> Stop a running pipeline
eeveon deploy <project> Trigger immediate deployment
eeveon logs [project] View deployment logs
eeveon remove <project> Remove a pipeline configuration
eeveon secrets set <p> <k> <v> Encrypt and store a secret
eeveon approve <project> Authorize a pending deployment
eeveon check Verify system dependencies
eeveon vacuum Clean up old log files

How It Works

Developer → Git Push → GitHub → EEveon Monitor → Auto Deploy → Production
  1. Developer pushes code to GitHub
  2. Monitor script checks GitHub every 2 minutes
  3. Detects new commits by comparing hashes
  4. Automatically pulls and deploys to production
  5. Respects .deployignore patterns
  6. Copies .env file
  7. Runs post-deploy hooks
  8. Logs everything

Configuration Files

.deployignore

Specify files/patterns to exclude from deployment:

.git
.gitignore
node_modules
__pycache__
*.pyc
*.log
.env.template

.env

Environment variables for your application:

NODE_ENV=production
DATABASE_URL=postgresql://user:pass@localhost/db
API_KEY=your-secret-key
PORT=3000

hooks/post-deploy.sh

Custom script to run after deployment:

#!/bin/bash
cd /var/www/myproject
npm install --production
pm2 restart myapp

Examples

Deploy a Node.js Application

eeveon init \
  --repo git@github.com:user/nodeapp.git \
  --name nodeapp \
  --path /var/www/nodeapp

# Create post-deploy hook
cat > ~/Desktop/github/eeveon/deployments/nodeapp/hooks/post-deploy.sh << 'EOF'
#!/bin/bash
cd /var/www/nodeapp
npm install --production
pm2 restart nodeapp || pm2 start server.js --name nodeapp
EOF
chmod +x ~/Desktop/github/eeveon/deployments/nodeapp/hooks/post-deploy.sh

eeveon start nodeapp -f

Deploy a Static Website

eeveon init \
  --repo https://github.com/user/static-site.git \
  --name mysite \
  --path /var/www/html/mysite

eeveon start mysite -f

Deploy a Python Flask App

eeveon init \
  --repo git@github.com:user/flaskapp.git \
  --name flaskapp \
  --path /var/www/flaskapp

# Create post-deploy hook
cat > ~/Desktop/github/eeveon/deployments/flaskapp/hooks/post-deploy.sh << 'EOF'
#!/bin/bash
cd /var/www/flaskapp
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
sudo systemctl restart flaskapp
EOF
chmod +x ~/Desktop/github/eeveon/deployments/flaskapp/hooks/post-deploy.sh

eeveon start flaskapp -f

Running as a Service

To run the monitor as a systemd service:

# Start the pipeline to generate service file
eeveon start myproject

# Install as systemd service
sudo cp /tmp/eeveon-myproject.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable eeveon-myproject
sudo systemctl start eeveon-myproject

# Check status
sudo systemctl status eeveon-myproject

# View logs
sudo journalctl -u eeveon-myproject -f

Directory Structure

eeveon/
├── bin/
│   └── eeveon              # Main CLI tool
├── scripts/
│   ├── monitor.sh          # Monitoring script
│   └── deploy.sh           # Deployment script
├── config/
│   └── pipeline.json       # Pipeline configurations
├── deployments/
│   └── <project-name>/
│       ├── repo/           # Cloned repository
│       ├── .env            # Environment variables
│       ├── .deployignore   # Ignore patterns
│       └── hooks/
│           └── post-deploy.sh
├── logs/
│   └── deploy-YYYY-MM-DD.log
├── install.sh              # Installation script
└── README.md

Requirements

  • Git
  • jq (JSON processor)
  • rsync
  • Python 3.6+
  • Bash 4.0+

All dependencies will be installed by install.sh if missing.

Troubleshooting

Pipeline not detecting changes

# Check if monitor is running
ps aux | grep monitor.sh

# Check logs
eeveon logs myproject -n 50

# Manually trigger deployment
eeveon deploy myproject

Permission issues

# Ensure deployment path is writable
sudo chown -R $USER:$USER /var/www/myproject

# Check script permissions
chmod +x ~/Desktop/github/eeveon/scripts/*.sh
chmod +x ~/Desktop/github/eeveon/bin/eeveon

Git authentication issues

For private repositories, set up SSH keys:

# Generate SSH key
ssh-keygen -t ed25519 -C "your_email@example.com"

# Add to GitHub
cat ~/.ssh/id_ed25519.pub
# Copy and add to GitHub Settings > SSH Keys

# Use SSH URL in pipeline
eeveon init --repo git@github.com:username/repo.git ...

Advanced Usage

Multiple Environments

# Production
eeveon init --repo https://github.com/user/app.git \
  --name app-prod --path /var/www/app --branch main

# Staging
eeveon init --repo https://github.com/user/app.git \
  --name app-staging --path /var/www/app-staging --branch develop

Custom Poll Interval

# Check every 30 seconds
eeveon init --interval 30 ...

# Check every 5 minutes
eeveon init --interval 300 ...

Security Notes

  • ⚠️ Never commit .env files to Git
  • ⚠️ Use SSH keys for private repositories
  • ⚠️ Ensure deployment paths have proper permissions
  • ⚠️ Review post-deploy hooks before running

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT

Author

Adarsh

Support

For issues or questions, check the logs:

eeveon logs -n 100

Or open an issue on GitHub.

Metadata

Release files for eeveon 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eeveon 0.4.0
File Size Uploaded Provenance Actions
eeveon-0.4.0.tar.gz 43.4 kB Without provenance Details for eeveon-0.4.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for eeveon 0.4.0
File Interpreter ABI Platform Actions
eeveon-0.4.0-py3-none-any.whl Python 3 none any Details for eeveon-0.4.0-py3-none-any.whl

Total release size: 93.8 kB

Release files / eeveon-0.4.0.tar.gz

Download URL eeveon-0.4.0.tar.gz
Size 43.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d60dfeabe7328020cde8a637eaf1b90bbdb1c487c9b0d0655273aa4f8d5dbf83
BLAKE2b-256 checksum
How to use checksums
8284326ff886d4c54fa1ff4a2feff2817066665a142999b9f69ffef65cf3b98d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.7

Release files / eeveon-0.4.0-py3-none-any.whl

Download URL eeveon-0.4.0-py3-none-any.whl
Size 50.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1447c92870d09af9efea029a4471efcb8864ee10e5418182fb80cc8296824079
BLAKE2b-256 checksum
How to use checksums
b7ec30c500fb11f0a283f0d95eccd6da3d715b1f9da3f690b8f2d70218552625
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.7

Security for eeveon 0.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page