verseer
v0.0.6
Published
Ultimate deployment management tool for dockerised microservices
Readme
Verseer: The Version Overseer for Software Deployments
Streamlining Software Deployment Through Intelligent Version Management Production usage: Verseer is in active development stage and not ready for real-project usage! Use at your own risk
Overview
Verseer is an advanced software development tool designed to simplify and automate version management for software deployments. It's specifically crafted to help growing development teams, DevOps engineers, and team leads scale their deployment processes efficiently. By combining the best practices of version control systems with deployment orchestration capabilities, Verseer ensures that every step in your deployment pipeline is traceable, manageable, and efficient.
Target Audience
Development Teams
- Growing Teams: Perfect for teams scaling from small to medium/large size
- Microservices Architecture: Streamlines version management across multiple services
- Collaborative Workflows: Enables smooth collaboration between team members
DevOps Engineers
- Automation: Reduces manual intervention in deployment processes
- Standardization: Enforces consistent deployment practices across the organization
- Monitoring: Provides comprehensive oversight of deployment states
Team Leads & Engineering Managers
- Governance: Implements controlled version release workflows
- Visibility: Offers clear insights into deployment status and version history
- Risk Management: Minimizes deployment risks through automated checks and balances
Key Features
1. Versioning Intelligence
- Automatically generates semantic version tags based on commit history and changes.
- Tracks dependencies and ensures compatibility between versions.
- Scales with your team's growth, handling multiple services and environments.
2. Deployment Orchestration
- Integrates seamlessly with CI/CD pipelines to deploy specific versions across multiple environments (e.g., development, staging, production).
- Allows rollbacks to previous stable versions in case of deployment failures.
- Supports complex deployment scenarios for growing teams.
3. Oversight and Monitoring
- Provides a dashboard to monitor active versions, deployments, and updates across environments.
- Generates detailed logs and analytics on version performance and usage.
- Enables team leads to track deployment health and team performance.
4. Collaboration and Governance
- Enables teams to collaborate by assigning version approvals and review checkpoints.
- Enforces policies for version release workflows to avoid unauthorized changes.
- Supports team-based access control and approval processes.
5. Compatibility and Integration
- Works with major version control systems like Git.
- Compatible with popular containerization tools (Docker, Kubernetes) and cloud platforms (AWS, Azure, GCP).
- Integrates with existing DevOps toolchains.
6. Custom Hooks and Automation
- Supports custom scripts to automate pre-deployment checks and post-deployment tasks.
- Notifies stakeholders about version updates and deployment statuses via integrations with Slack, Microsoft Teams, or email.
- Enables teams to implement their specific deployment requirements.
Benefits
- Team Scalability: Grows with your team, from small startups to large enterprises
- Increased Efficiency: Simplifies version control in large-scale deployment processes
- Improved Reliability: Minimizes the risk of deploying unstable or incompatible versions
- Enhanced Traceability: Offers full audit trails for every version and deployment
- Team Collaboration: Fosters better communication and coordination between team members
- DevOps Maturity: Helps teams implement and maintain DevOps best practices
Why Verseer?
Verseer addresses the challenges faced by growing software teams in managing versions and deployments across dynamic and distributed systems. By acting as both a "version" manager and an "overseer" of deployments, Verseer bridges the gap between development and operations, fostering smoother and more reliable software releases. It's particularly valuable for:
- Teams transitioning from monolithic to microservices architecture
- Organizations scaling their DevOps practices
- Engineering managers implementing standardized deployment processes
- Teams looking to improve their deployment reliability and traceability
Example Use Case
Imagine a growing team deploying a microservices-based application. With Verseer, they can:
- Automatically tag new versions of each microservice upon commits.
- Deploy a specific combination of microservice versions to a staging environment for testing.
- Roll back a service to the previous version if an issue arises post-deployment.
- Generate a report summarizing all deployed versions in production at any given time.
- Track team deployment patterns and identify areas for improvement.
- Implement standardized deployment processes across the organization.
Make your deployments smarter, faster, and more reliable with Verseer.
Verseer Initialization Script
This script helps you set up a new Verseer project by creating the necessary configuration and directory structure.
Prerequisites
- Node.js installed
- Git installed (if you plan to use a boilerplate repository)
- npm or yarn package manager
Quick Start
Run the initialization script using npx:
npx verseer initThis will:
- Create a new project folder or use an existing empty folder
- Initialize a new package.json
- Install Verseer as a development dependency
- Guide you through the setup process
Manual Installation (Alternative)
If you prefer to install Verseer locally:
- Clone this repository
- Install dependencies:
npm install- Run the initialization script:
npm run initThe script will guide you through the following steps:
- Project Name: Enter a name for your project
- A folder with this name will be created in the current directory
- If the folder exists, it must be empty
- Projects Folder: Specify where your projects will be stored (defaults to
~/projects) - Boilerplate Configuration: Set up boilerplates for different service types
Configuration
The script creates a .verseer.settings.yml file with the following structure:
project_name: your-project-name
projects_folder: /path/to/projects
boilerplates:
pods:
service:
repository: git-repository-url
enabled: true
source: custom
api:
repository: node_modules/verseer/templates/ci/node
enabled: true
source: template
static:
web:
repository: git-repository-url
enabled: true
source: custom
mobile:
repository: node_modules/verseer/templates/ci/static
enabled: true
source: template
packages:
shared:
repository: git-repository-url
enabled: true
source: custom
utils:
repository: node_modules/verseer/templates/ci/node
enabled: true
source: template
pods:
prefix: pods
types: [service, api]
static:
prefix: static
types: [web, mobile]
packages:
prefix: packages
types: [shared, utils]
namespace: @verseerBoilerplate Configuration
The initialization process guides you through configuring boilerplates for each type of component. Templates are located in the node_modules/verseer/templates/ci directory when Verseer is installed as a dependency.
Pods Boilerplates
- Service type boilerplates
- API type boilerplates
- Worker type boilerplates
Static Boilerplates
- Web type boilerplates
- Mobile type boilerplates
Packages Boilerplates
- Shared type boilerplates
- Utils type boilerplates
For each boilerplate, you can choose between:
- Custom Git repository
- Verseer template from the
templates/cidirectory
Available template types:
- node
- python
- maven
- rpm
- deb
- static
Note: Boilerplates are not immediately cloned or copied. They will be synced when you run the sync command.
Error Handling
- If
.verseer.settings.ymlalready exists in the current directory, the script will throw an error - The projects folder will be created if it doesn't exist
- Duplicate type configurations are not allowed within each category
- At least one boilerplate must be configured
Next Steps
After initialization, you can:
- Review the generated
.verseer.settings.ymlfile - Run the sync command to set up your boilerplates
- Start creating your services in the projects folder
- Use the appropriate boilerplate repository or template for each service type
