Skip to main content

Release Management

Purpose

This page documents the release management process for Maqsafy services.

The purpose is to control changes, reduce deployment risk, improve traceability, and ensure that every production release is tested, approved, documented, and recoverable.

Release Management Scope

This process applies to:

  • Backend releases
  • Frontend releases
  • Dashboard releases
  • Mobile app releases
  • Database migrations
  • Infrastructure changes
  • Security patches
  • Configuration changes
  • Integration changes

Release Principles

  • Every production release must have a clear owner.
  • Every release must have a documented scope.
  • Every release must be tested before production deployment.
  • Every release must have rollback instructions.
  • Every release must document database migrations.
  • Every release must document operational risks.
  • Sensitive data must not be included in release notes.
  • Production deployment must not be performed without backup confirmation.

Versioning

Use a clear versioning scheme for releases.

Recommended format:

MAJOR.MINOR.PATCH

Example:

1.4.2

Semantic Versioning defines version numbers as MAJOR.MINOR.PATCH, where each part communicates the type of change being released. It also states that once a versioned package has been released, that release content must not be modified; changes should be released as a new version.

Version Change Rules

Change TypeVersion ImpactExample
Breaking changeMAJOR2.0.0
New feature without breaking existing behaviorMINOR1.5.0
Bug fix or hotfixPATCH1.4.3

Release Types

Release TypeDescriptionExample
Major ReleaseLarge release with breaking or structural changesNew platform module
Minor ReleaseNew feature or enhancementNew report or workflow
Patch ReleaseBug fix with limited scopeFix dashboard display issue
HotfixUrgent production fixFix login failure
Security ReleaseFix for security vulnerabilityPatch access control issue
Infrastructure ReleaseServer, Nginx, Docker, Redis, or database infrastructure changeUpdate Nginx config

Branching Rules

BranchPurpose
main / productionStable production-ready code
stagingPre-production validation
developActive development, if used
feature/*Feature development
hotfix/*Urgent production fixes
release/*Release preparation, if used

Pull Request Rules

Every code change should go through review before merging.

Pull request checklist:

CheckRequired
Clear change descriptionYes
Linked requirement or issueYes
Code review completedYes
Tests passedYes
Security impact reviewedYes
Database migration reviewedIf applicable
Rollback impact reviewedYes
Documentation updatedIf applicable

Pre-Release Checklist

Before releasing to production, confirm:

ItemStatus
Release owner assignedTBD
Release scope documentedTBD
Requirements linkedTBD
Code review completedTBD
Tests passedTBD
RBAC impact reviewedTBD
Tenant isolation impact reviewedTBD
Database migrations reviewedTBD
Backup confirmedTBD
Rollback plan documentedTBD
Environment variables reviewedTBD
Queue workers impact reviewedTBD
Integration impact reviewedTBD
Monitoring and alerts checkedTBD
Release notes preparedTBD

Testing Requirements

Each release should include the relevant tests:

Test TypeRequired When
Unit testsCode logic changes
Feature testsWorkflow changes
API testsAPI changes
RBAC testsPermission or role changes
Cross-tenant testsAny scoped data access change
Regression testsAny production release
Security testsAuth, finance, credential, or input changes
Performance testsReports, exports, or heavy queries
Backup / restore validationHigh-risk database changes

Database Migration Review

Any migration must be reviewed before production release.

Migration checklist:

CheckRequired
Migration reviewed by developerYes
Migration tested on stagingYes
Backup confirmed before productionYes
Rollback strategy documentedYes
Large table impact reviewedYes
Destructive operation avoided or approvedYes
Expected execution time estimatedYes
Index impact reviewedYes

Deployment Steps

Use the actual deployment process for the environment.

General Laravel placeholder:

git pull
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan queue:restart

Maintenance Mode

Use maintenance mode only when the release requires user traffic to stop temporarily.

Example placeholder:

php artisan down

Return the system online:

php artisan up

Laravel documents maintenance mode for temporarily preventing users from accessing the application during maintenance or deployment operations.

Queue Worker Handling

After deployment, restart queue workers gracefully:

php artisan queue:restart

Queue restart is required when workers need to reload the updated application code or configuration.

Post-Deployment Checklist

After deployment, verify:

CheckExpected Result
Homepage or health endpointResponds successfully
LoginWorks
Protected API endpointWorks
Dashboard pageLoads correctly
Queue workersProcessing jobs
RedisReachable
DatabaseReachable
NginxNo config errors
LogsNo new critical errors
IntegrationsNo critical failures
MonitoringNo critical alerts
Reports / exportsWork if impacted
Payments / walletWork if impacted
Credential flowsWork if impacted

Rollback Plan

Every release must have a rollback plan.

Rollback plan fields:

FieldDescription
Previous versionLast stable version
Code rollback commandHow to return code
Database rollbackWhether migration rollback is safe
Configuration rollbackRequired config changes
File rollbackRequired static or uploaded file changes
OwnerPerson responsible
ApprovalWho approves rollback
VerificationHow to confirm rollback success

Example placeholder:

git checkout <previous-release-tag>
composer install --no-dev --optimize-autoloader
php artisan queue:restart

Release Notes Template

Use this format for every release:

## Version X.Y.Z - YYYY-MM-DD

### Summary

Short release summary.

### Changes

- Change 1
- Change 2
- Change 3

### Impacted Areas

- Backend
- Frontend
- Database
- API
- Queue
- Integrations

### Database Changes

- Migration name: TBD
- Rollback safe: Yes / No / Needs confirmation

### Security Impact

- RBAC impact: Yes / No
- Tenant isolation impact: Yes / No
- Sensitive data impact: Yes / No

### Testing Completed

- Unit tests: Yes / No
- API tests: Yes / No
- RBAC tests: Yes / No
- Regression tests: Yes / No

### Deployment Notes

- Deployment owner: TBD
- Deployment time: TBD
- Rollback owner: TBD

### Known Issues

- TBD

Hotfix Process

Hotfixes are urgent production fixes.

Hotfix rules:

  • Scope must be limited.
  • Root cause must be documented.
  • Risk must be reviewed quickly.
  • Fix must be tested before production.
  • Deployment must be logged.
  • Full post-release review must happen after stabilization.

Security Release Process

Security releases require stricter handling.

Security release checklist:

CheckRequired
Vulnerability documented internallyYes
Affected systems identifiedYes
Exploit risk assessedYes
Fix testedYes
Secrets rotated if neededYes
Logs reviewed if neededYes
External disclosure reviewed if neededYes
Post-fix verification completedYes

Release Approval Matrix

Release TypeApproval Required
PatchTechnical owner
MinorTechnical owner + product owner
MajorTechnical owner + product owner + business owner
HotfixTechnical owner
SecurityTechnical owner + security owner / management
Database destructive changeTechnical owner + management approval

Release Log

Use this table to track releases:

VersionDateTypeOwnerStatusNotes
TBDTBDTBDTBDTBDTBD

Open Items

ItemStatusNotes
Confirm versioning schemeTBDSemVer recommended
Confirm branching strategyTBDReplace placeholders
Confirm release approversTBDRequired
Confirm deployment ownerTBDRequired
Confirm rollback processTBDRequired
Confirm hotfix processTBDRequired
Confirm release note storage locationTBDRequired
Confirm production maintenance windowTBDRequired

Rules

  • Do not release without testing.
  • Do not release without rollback plan.
  • Do not release without backup confirmation when database changes are included.
  • Do not include secrets in release notes.
  • Do not include real customer data in release notes.
  • Do not modify an already released version; publish a new version instead.
  • Do not deploy high-risk changes during peak time unless approved.