PHPackages                             alegiac/laravel-release-manager - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [DevOps &amp; Deployment](/categories/devops)
4. /
5. alegiac/laravel-release-manager

ActiveLibrary[DevOps &amp; Deployment](/categories/devops)

alegiac/laravel-release-manager
===============================

Automated release management for Laravel packages with Conventional Commits support

1.4.0(4mo ago)151.3k↓30.8%1[1 issues](https://github.com/alegiac/laravel-release-manager/issues)MITPHPPHP ^8.0CI passing

Since Oct 24Pushed 4mo agoCompare

[ Source](https://github.com/alegiac/laravel-release-manager)[ Packagist](https://packagist.org/packages/alegiac/laravel-release-manager)[ Docs](https://github.com/alegiac/laravel-release-manager)[ RSS](/packages/alegiac-laravel-release-manager/feed)WikiDiscussions main Synced 3d ago

READMEChangelog (1)Dependencies (12)Versions (13)Used By (0)

Laravel Release Manager
=======================

[](#laravel-release-manager)

[![Latest Version on Packagist](https://camo.githubusercontent.com/6413d5ab7caf9b23fdbdd90101988aecbc255305c2f255cc48d63f03ae82f9d1/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616c65676961632f6c61726176656c2d72656c656173652d6d616e616765722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/alegiac/laravel-release-manager)[![Total Downloads](https://camo.githubusercontent.com/bfce8b337c6aa9a04122ee9da388cb6ec535377b5d42e43257727357eff9d2bf/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f616c65676961632f6c61726176656c2d72656c656173652d6d616e616765722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/alegiac/laravel-release-manager)[![Tests](https://github.com/alegiac/laravel-release-manager/actions/workflows/tests.yml/badge.svg)](https://github.com/alegiac/laravel-release-manager/actions/workflows/tests.yml)[![Code Coverage](https://camo.githubusercontent.com/5475a9906f0460da60ee52b604dc553324df54f3e1c674b8afa0f947dd6c1ce0/68747470733a2f2f636f6465636f762e696f2f67682f616c65676961632f6c61726176656c2d72656c656173652d6d616e616765722f6272616e63682f6d61696e2f67726170682f62616467652e737667)](https://codecov.io/gh/alegiac/laravel-release-manager)[![License](https://camo.githubusercontent.com/2817b230cb1f3eef47079a80b8c438f941943684337851d487cb01f6a3568b99/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f616c65676961632f6c61726176656c2d72656c656173652d6d616e616765722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/alegiac/laravel-release-manager)[![PHP Version](https://camo.githubusercontent.com/9558ac8d5b8fa06a98442f0e08424225ffb502334435304a21144fdf3851287f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f616c65676961632f6c61726176656c2d72656c656173652d6d616e616765722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/alegiac/laravel-release-manager)

Automated release management for Laravel packages with Conventional Commits support and automatic changelog generation.

Features
--------

[](#features)

- **Automatic Version Bumping** - Analyzes commits and determines version increment (major/minor/patch)
- **Conventional Commits** - Full support for conventional commit format
- **Changelog Generation** - Automatically generates and updates CHANGELOG.md
- **Breaking Changes Detection** - Automatically detects breaking changes
- **Git Tag Creation** - Creates annotated git tags
- **Release Notifications** - Send notifications to Telegram, Slack, Discord
- **AI Descriptions** - Generate human-readable descriptions of changes
- **Laravel Artisan Command** - Easy to use artisan command
- **Standalone Script** - Can also be used as a standalone bash script

Quick Start
-----------

[](#quick-start)

### Basic Setup

[](#basic-setup)

```
# 1. Install
composer require --dev alegiac/laravel-release-manager

# 2. Interactive setup (recommended for first time)
php artisan release:setup --interactive

# 3. Make changes and commit
git commit -m "feat: add awesome feature"

# 4. Create release
php artisan release

# 5. Push
git push --follow-tags
```

**Note:** Use `--interactive` for a guided setup that asks for:

- Initial version
- Branch setup
- Repository creation/linking
- Remote push preferences

### Complete Setup with Repository

[](#complete-setup-with-repository)

```
# 1. Install
composer require --dev alegiac/laravel-release-manager

# 2. Full setup with GitHub repository creation
php artisan release:setup \
    --initial-version=1.0.0 \
    --create-repo \
    --branches \
    --push

# 3. Or link to existing repository
php artisan release:setup \
    --initial-version=1.0.0 \
    --repo=git@github.com:username/repo.git \
    --branches \
    --push
```

Installation
------------

[](#installation)

Install via Composer:

```
composer require --dev alegiac/laravel-release-manager
```

Initialize the release system:

```
php artisan release:setup
```

This will:

- Create initial CHANGELOG.md
- Create initial git tag (v0.0.1 by default)
- Publish the release script
- Publish documentation

You can specify a custom initial version:

```
php artisan release:setup --initial-version=1.0.0
```

### Publishing Assets

[](#publishing-assets)

You can publish assets individually:

```
# Publish configuration
php artisan vendor:publish --tag=release-manager-config

# Publish scripts
php artisan vendor:publish --tag=release-manager-scripts

# Publish documentation
php artisan vendor:publish --tag=release-manager-docs
```

Or publish everything:

```
php artisan vendor:publish --provider="Alegiac\\ReleaseManager\\ReleaseManagerServiceProvider"
```

Usage
-----

[](#usage)

### Option 1: Laravel Artisan Command

[](#option-1-laravel-artisan-command)

```
# Auto-detect version bump from commits
php artisan release

# Force a specific version type
php artisan release --patch
php artisan release --minor
php artisan release --major

# Dry run (show what would happen without making changes)
php artisan release --dry-run
```

### Option 2: Standalone Script

[](#option-2-standalone-script)

```
# Auto-detect version bump
./release-conventional.sh auto

# Specific version bump
./release-conventional.sh patch
./release-conventional.sh minor
./release-conventional.sh major
```

Conventional Commits
--------------------

[](#conventional-commits)

Write commits following this format:

```
():

```

### Commit Types

[](#commit-types)

- **feat**: New feature (bumps MINOR version)
- **fix**: Bug fix (bumps PATCH version)
- **docs**: Documentation changes
- **style**: Code style changes
- **refactor**: Code refactoring
- **perf**: Performance improvements
- **test**: Adding or updating tests
- **build**: Build system changes
- **ci**: CI/CD changes
- **chore**: Other changes

### Breaking Changes

[](#breaking-changes)

Add `!` after the type to indicate a breaking change (bumps MAJOR version):

```
git commit -m "feat!: remove deprecated API endpoints"
```

Examples
--------

[](#examples)

### Development Workflow

[](#development-workflow)

```
# Make changes and commit
git add .
git commit -m "feat: add payment gateway support"
git commit -m "fix: resolve timeout issue"
git commit -m "docs: update README"

# Create release
php artisan release

# Or use the script
./release-conventional.sh auto

# Push to repository
git push --follow-tags
```

### Example Output

[](#example-output)

```
[INFO] Last tag: v1.0.0
[INFO] Detected new features - bumping MINOR version
[INFO] New version: v1.1.0
[SECTION] Generating changelog...

## [v1.1.0] - 2024-01-24

### Features
- add payment gateway support

### Bug Fixes
- resolve timeout issue

### Documentation
- update README

Proceed with release v1.1.0? (y/n)

```

Generated Changelog
-------------------

[](#generated-changelog)

The package automatically updates `CHANGELOG.md`:

```
# Changelog

All notable changes to this project will be documented in this file.

## [v1.1.0] - 2024-01-24

### Features
- add payment gateway support

### Bug Fixes
- resolve timeout issue

### Documentation
- update README

## [v1.0.0] - 2024-01-01

### Features
- initial release
```

Notifications
-------------

[](#notifications)

The package supports sending release notifications to external services like Telegram, Slack, and Discord.

### Setup Notifications

[](#setup-notifications)

1. **Enable notifications** in your `.env`:

```
RELEASE_MANAGER_NOTIFICATIONS_ENABLED=true
RELEASE_MANAGER_NOTIFICATION_DRIVER=telegram
```

2. **Configure your preferred service**:

#### Telegram

[](#telegram)

```
RELEASE_MANAGER_TELEGRAM_ENABLED=true
RELEASE_MANAGER_TELEGRAM_BOT_TOKEN=your_bot_token
RELEASE_MANAGER_TELEGRAM_CHAT_ID=your_chat_id
```

#### Slack

[](#slack)

```
RELEASE_MANAGER_SLACK_ENABLED=true
RELEASE_MANAGER_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/...
RELEASE_MANAGER_SLACK_CHANNEL=#releases
RELEASE_MANAGER_SLACK_USERNAME=Release Bot
```

#### Discord

[](#discord)

```
RELEASE_MANAGER_DISCORD_ENABLED=true
RELEASE_MANAGER_DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/...
RELEASE_MANAGER_DISCORD_USERNAME=Release Bot
```

### Usage

[](#usage-1)

Notifications are sent automatically after each release:

```
php artisan release
```

To skip notifications:

```
php artisan release --no-notify
```

### Notification Content

[](#notification-content)

Notifications include:

- Release version and type (major/minor/patch)
- Number of commits
- Changelog summary
- Timestamp

AI Descriptions
---------------

[](#ai-descriptions)

Generate human-readable descriptions of changes using AI to explain what changed, technical impacts, and user impacts.

### Setup AI Descriptions

[](#setup-ai-descriptions)

1. **Enable AI descriptions** in your `.env`:

```
RELEASE_MANAGER_AI_DESCRIPTION_ENABLED=true
RELEASE_MANAGER_AI_PROVIDER=openai
```

2. **Configure your AI provider**:

#### OpenAI

[](#openai)

```
OPENAI_API_KEY=your_openai_api_key
RELEASE_MANAGER_OPENAI_MODEL=gpt-3.5-turbo
RELEASE_MANAGER_OPENAI_MAX_TOKENS=1000
```

#### Anthropic (Claude)

[](#anthropic-claude)

```
ANTHROPIC_API_KEY=your_anthropic_api_key
RELEASE_MANAGER_ANTHROPIC_MODEL=claude-3-sonnet-20240229
RELEASE_MANAGER_ANTHROPIC_MAX_TOKENS=1000
```

#### Ollama (Local)

[](#ollama-local)

```
RELEASE_MANAGER_AI_PROVIDER=ollama
RELEASE_MANAGER_OLLAMA_BASE_URL=http://localhost:11434
RELEASE_MANAGER_OLLAMA_MODEL=llama2
```

### Usage

[](#usage-2)

Generate AI descriptions with your release:

```
php artisan release --ai-description
```

**Example output:**

```
🤖 Generating AI description...
✓ AI description generated and added to changelog

## [v1.2.0] - 2024-01-24

### Features
- add two-factor authentication system
- add real-time dashboard updates

### Bug Fixes
- resolve session timeout on mobile
- fix payment processing error

### Performance
- optimize database queries
- add Redis caching

### AI Description

## Cosa è Cambiato

Questa release introduce un sistema di autenticazione a due fattori (2FA) per migliorare la sicurezza degli account utente, insieme a ottimizzazioni delle performance per le query del database.

## Impatto Lato Codice

- Nuovo modello `TwoFactorAuth` per gestire i codici 2FA
- Modifiche al controller `AuthController` per supportare la verifica 2FA
- Aggiunta di middleware per proteggere le rotte sensibili
- Nuove migrazioni per le tabelle 2FA

## Impatto Lato Sistema

- Miglioramento della sicurezza con autenticazione a due fattori
- Ottimizzazione delle query N+1 nel dashboard utenti
- Riduzione del tempo di caricamento del 40%
- Aggiunta di logging per eventi di sicurezza

## Impatto Lato Cliente

- Gli utenti potranno abilitare 2FA nelle impostazioni account
- Dashboard più veloce e reattivo
- Maggiore sicurezza per i dati personali
- Notifiche email per nuovi accessi sospetti

```

### Templates

[](#templates)

Choose between two description templates:

- **Default**: Concise description (300 words max)
- **Detailed**: Comprehensive analysis (500 words max)

```
RELEASE_MANAGER_AI_TEMPLATE=detailed
```

Configuration
-------------

[](#configuration)

The package works out of the box, but you can customize behavior by modifying the published script.

Best Practices
--------------

[](#best-practices)

### 1. Use Descriptive Commit Messages

[](#1-use-descriptive-commit-messages)

```
# Good
git commit -m "feat(auth): add two-factor authentication"
git commit -m "fix(api): resolve null pointer in payment handler"

# Avoid
git commit -m "fix stuff"
git commit -m "updates"
```

### 2. Use Scopes for Better Organization

[](#2-use-scopes-for-better-organization)

```
git commit -m "feat(api): add new endpoint"
git commit -m "fix(ui): correct button alignment"
git commit -m "docs(readme): add installation guide"
```

### 3. Mark Breaking Changes Explicitly

[](#3-mark-breaking-changes-explicitly)

```
git commit -m "feat!: change response structure

BREAKING CHANGE: API now returns 'data' object instead of direct response"
```

Artisan Commands
----------------

[](#artisan-commands)

### Setup Command

[](#setup-command)

```
php artisan release:setup [options]
```

**Options:**

- `--initial-version=X.Y.Z` - Specify initial version (default: 0.0.1)
- `--interactive` - Interactive setup mode (asks for all options)
- `--repo=URL` - Link to existing repository
- `--create-repo` - Create new repository on GitHub (requires GitHub CLI)
- `--workspace=NAME` - Bitbucket workspace for repo creation
- `--private` - Make repository private (default: public)
- `--branches` - Setup standard branches (main, develop, stage)
- `--push` - Push branches and tags to remote
- `--force` - Overwrite existing setup

**Examples:**

```
# Basic setup with default version (v0.0.1)
php artisan release:setup

# Interactive setup (recommended for first-time users)
php artisan release:setup --interactive

# Setup with custom version
php artisan release:setup --initial-version=1.0.0

# Setup and link to existing GitHub repository
php artisan release:setup \
    --initial-version=1.0.0 \
    --repo=git@github.com:username/my-app.git

# Complete setup: create GitHub repo + branches + push
php artisan release:setup \
    --initial-version=1.0.0 \
    --create-repo \
    --branches \
    --push

# Setup with Bitbucket
php artisan release:setup \
    --initial-version=1.0.0 \
    --repo=git@bitbucket.org:workspace/repo.git \
    --branches

# Setup private repository
php artisan release:setup \
    --create-repo \
    --private \
    --branches

# Reinitialize (force overwrite)
php artisan release:setup --force --initial-version=2.0.0
```

**What it does:**

1. Initializes git repository (if not already initialized)
2. Creates CHANGELOG.md with initial version
3. Creates initial git tag (e.g., v0.0.1)
4. Optionally creates repository on GitHub/Bitbucket
5. Optionally links to existing repository
6. Optionally creates standard branches (main, develop, stage)
7. Optionally pushes everything to remote
8. Publishes release scripts and documentation

### Release Command

[](#release-command)

```
php artisan release [--patch] [--minor] [--major] [--dry-run] [--no-confirm] [--no-notify] [--ai-description]
```

Options:

- `--patch` - Force patch version bump (1.0.0 -&gt; 1.0.1)
- `--minor` - Force minor version bump (1.0.0 -&gt; 1.1.0)
- `--major` - Force major version bump (1.0.0 -&gt; 2.0.0)
- `--dry-run` - Show what would happen without making changes
- `--no-confirm` - Run without confirmation prompts
- `--no-notify` - Skip sending notifications
- `--ai-description` - Generate human-readable AI description of changes

Package Structure
-----------------

[](#package-structure)

The package follows Laravel's standard package structure:

```
laravel-release-manager/
├── .github/
│   └── workflows/
│       └── tests.yml              # CI/CD workflow
├── config/
│   └── release-manager.php        # Configuration file
├── scripts/
│   ├── release-conventional.sh    # Main release script
│   └── release-setup.sh           # Setup script
├── src/
│   ├── Commands/
│   │   ├── ReleaseCommand.php     # php artisan release
│   │   └── ReleaseSetupCommand.php # php artisan release:setup
│   ├── Services/
│   │   └── ReleaseManager.php     # Core logic
│   └── ReleaseManagerServiceProvider.php
├── stubs/
│   ├── CHANGELOG.md               # CHANGELOG template
│   └── RELEASING.md               # Documentation template
├── tests/
│   ├── Feature/                   # Feature tests
│   ├── Unit/                      # Unit tests
│   ├── Pest.php                   # Pest configuration
│   └── TestCase.php               # Base test case
├── .gitignore
├── CHANGELOG.md                   # Package changelog
├── composer.json                  # Package definition
├── CONTRIBUTING.md                # Contribution guidelines
├── LICENSE.md                     # MIT License
├── phpstan.neon                   # Static analysis config
├── phpunit.xml                    # PHPUnit configuration
└── README.md                      # This file

```

Requirements
------------

[](#requirements)

- PHP &gt;= 8.0
- Laravel &gt;= 8.0
- Git

Testing
-------

[](#testing)

```
composer test
```

Contributing
------------

[](#contributing)

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

Credits
-------

[](#credits)

- [Alessandro Giacomella](https://github.com/alegiac)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

Links
-----

[](#links)

- [Conventional Commits](https://www.conventionalcommits.org/)
- [Semantic Versioning](https://semver.org/)
- [Keep a Changelog](https://keepachangelog.com/)

###  Health Score

43

—

FairBetter than 89% of packages

Maintenance75

Regular maintenance activity

Popularity27

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 91.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~13 days

Recently: every ~31 days

Total

11

Last Release

125d ago

Major Versions

0.1.0 → 1.0.02025-10-25

PHP version history (2 changes)0.1.0PHP &gt;=8.1

1.3.0PHP ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/0b12fe83a0640b7339d5967041de63639817b48e2c7a8a44ebab2b955b3a53c1?d=identicon)[alegiac](/maintainers/alegiac)

---

Top Contributors

[![alegiac](https://avatars.githubusercontent.com/u/12858077?v=4)](https://github.com/alegiac "alegiac (11 commits)")[![bartdenhoed](https://avatars.githubusercontent.com/u/10920039?v=4)](https://github.com/bartdenhoed "bartdenhoed (1 commits)")

---

Tags

laravelautomationreleasegitchangelogconventional-commitssemantic versioning

###  Code Quality

TestsPest

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/alegiac-laravel-release-manager/health.svg)

```
[![Health](https://phpackages.com/badges/alegiac-laravel-release-manager/health.svg)](https://phpackages.com/packages/alegiac-laravel-release-manager)
```

###  Alternatives

[laravel/mcp

Rapidly build MCP servers for your Laravel applications.

77022.3M151](/packages/laravel-mcp)[spatie/laravel-responsecache

Speed up a Laravel application by caching the entire response

2.8k9.0M69](/packages/spatie-laravel-responsecache)[psalm/plugin-laravel

Psalm plugin for Laravel

3355.3M346](/packages/psalm-plugin-laravel)[mike-bronner/laravel-model-caching

Automatic caching for Eloquent models.

2.4k91.9k1](/packages/mike-bronner-laravel-model-caching)[laravel/ai

The official AI SDK for Laravel.

1.0k3.2M203](/packages/laravel-ai)[spatie/laravel-export

Create a static site bundle from a Laravel app

674146.0k6](/packages/spatie-laravel-export)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
