3.0.0 • Published 6 months ago

capiploy2 v3.0.0

Weekly downloads
-
License
-
Repository
-
Last release
6 months ago

Capiploy: A Modular Deployment Tool

Capiploy is an interactive CLI tool designed to simplify the deployment process for individual modules and predefined module groups. Built with flexibility in mind, it allows you to create, execute, and manage deployment tasks efficiently.


Features

  • Module Deployment: Deploy individual modules with custom logic.
  • Group Deployment: Combine and deploy multiple modules in predefined groups.
  • Dynamic Module Management: Create new modules and groups on the fly.
  • Interactive Menu: Navigate and deploy through a visually rich terminal interface.
  • Error Handling: Detailed error messages for failed tasks.
  • Logs: Automatically log all deployment activities.

Prerequisites

1. Software Requirements

  • Node.js (16+ recommended)
  • npm (for dependency management)

2. Permissions

Ensure you have appropriate permissions to execute system-level commands required for deployment.


Project Structure

.
├── deploy.js                 # Main script to run Capiploy
├── package.json              # Project configuration
├── README.md                 # Documentation
└── system
    ├── functions.js          # Core utilities for deployment
    └── templates
        ├── deploy_modules_template.js  # Template for defining modules and groups
        └── module_template.js          # Template for creating new modules

Installation

Local Installation

  1. Clone the repository:

    git clone git@gitlab.com\:carloshsilva1989/capiploy.git
    cd capiploy
  2. Install dependencies:

    npm install
  3. Run Capiploy locally:

    node deploy.js

Global Installation

  1. Install Capiploy globally via npm:

    npm install -g capiploy
  2. After global installation, you can run the tool from anywhere using the command:

    capi

Configuration

1. Module Definition

Modules are defined in system/templates/deploy_modules_template.js. Add your modules in the MODULES array:

export const MODULES = [
  { name: "backend", path: "modules/backend.js" },
  { name: "frontend", path: "modules/frontend.js" },
];

2. Group Definition

Groups are combinations of modules and are defined in the GROUPS array:

export const GROUPS = [
  { name: "Full Deployment", modules: ["modules/backend.js", "modules/frontend.js"] },
];

3. Module Template

Create new modules using module_template.js:

import { runTasks } from '../system/functions.js';

export async function deploy() {
  await runTasks('backend', [
    { description: 'Pull latest changes', command: 'git pull origin main' },
    { description: 'Restart server', command: 'systemctl restart backend.service' },
  ]);
}

4. Credentials Configuration

Configure your remote credentials in system/remote_credentials.json:

{
  "host": "your_remote_host",
  "username": "your_remote_username",
  "privateKeyPath": "/path/to/your/private/key"
}

Ensure your SSH private key is added to the ~/.ssh/authorized_keys file on the remote server.


Usage

  1. Start Capiploy:

    capi
  2. Navigate the Menu:

    -----------------------------------------
       Capiploy Deployment Tool
    -----------------------------------------
    1) Deploy Backend
    2) Deploy Frontend
    3) Deploy Full Deployment
    4) Exit
    -----------------------------------------
    Select an option:
  3. Add New Modules or Groups: Use the built-in options to create new modules or groups dynamically.


Logs

All deployment activities are logged to logs/deploy.log for audit and troubleshooting purposes.


Example Workflow

1. Define a New Module

Create a new module in modules/backend.js:

import { runTasks } from '../system/functions.js';

export async function deploy() {
  await runTasks('backend', [
    { description: 'Pull latest code', command: 'git pull origin main' },
    { description: 'Restart backend service', command: 'sudo systemctl restart backend' },
  ]);
}

Add the module to deploy_modules_template.js:

export const MODULES = [
  { name: "backend", path: "modules/backend.js" },
];

2. Run Deployment

Launch Capiploy and select "Deploy Backend" from the menu.


Contributing

  1. Fork the repository.
  2. Create a feature branch:
    git checkout -b feature/your-feature
  3. Commit your changes:
    git commit -m "Add your feature"
  4. Push and create a pull request.

License

Capiploy is released under the MIT License. See LICENSE for details.

3.0.0

6 months ago

2.0.0

6 months ago

1.0.0

6 months ago