wheels deploy lock
Lock deployment state to prevent concurrent deployments and maintain deployment integrity.
Synopsis
wheels deploy lock <action> [options]
Description
The wheels deploy lock
command manages deployment locks to prevent concurrent deployments, ensure deployment atomicity, and maintain system stability during critical operations. This is essential for coordinating deployments in team environments and automated systems.
Actions
acquire
- Acquire a deployment lockrelease
- Release an existing lockstatus
- Check current lock statusforce-release
- Force release a stuck lock (use with caution)list
- List all active lockswait
- Wait for lock to become available
Options
--environment, -e
- Target environment to lock (default: production)--reason
- Reason for acquiring lock (required for acquire)--duration
- Lock duration in minutes (default: 30)--wait-timeout
- Maximum time to wait for lock in seconds--force
- Force acquire lock even if already locked--owner
- Lock owner identifier (default: current user)--metadata
- Additional lock metadata as JSON
Examples
Acquire deployment lock
wheels deploy lock acquire --reason "Deploying version 2.1.0"
Check lock status
wheels deploy lock status
Release lock
wheels deploy lock release
Wait for lock availability
wheels deploy lock wait --wait-timeout 300
Force release stuck lock
wheels deploy lock force-release --reason "Previous deployment crashed"
List all locks
wheels deploy lock list
Lock Information
Locks contain the following information:
Lock ID
Environment
Owner (user/system)
Acquisition time
Expiration time
Reason
Associated deployment ID
Metadata
Lock Types
Manual locks
User-initiated locks for maintenance or manual deployments:
wheels deploy lock acquire --reason "Database maintenance" --duration 60
Automatic locks
System-acquired locks during automated deployments:
# Automatically acquired during deployment
wheels deploy exec
Emergency locks
High-priority locks for critical operations:
wheels deploy lock acquire --force --reason "Emergency hotfix"
Use Cases
Maintenance window
# Lock environment for maintenance
wheels deploy lock acquire \
--reason "Scheduled maintenance" \
--duration 120 \
--metadata '{"ticket": "MAINT-123"}'
# Perform maintenance...
# Release when done
wheels deploy lock release
Coordinated deployment
# Wait for lock and deploy
wheels deploy lock wait --wait-timeout 600
wheels deploy exec --auto-lock
CI/CD integration
# In CI/CD pipeline
if wheels deploy lock acquire --reason "CI/CD Deploy #${BUILD_ID}"; then
wheels deploy exec
wheels deploy lock release
else
echo "Could not acquire lock"
exit 1
fi
Lock States
Available
No active lock, deployments can proceed
Locked
Active lock in place, deployments blocked
Expired
Lock duration exceeded, can be cleaned up
Force-locked
Emergency lock overriding normal locks
Best Practices
Always provide reasons: Clear reasons help team coordination
Set appropriate durations: Don't lock longer than necessary
Release locks promptly: Release as soon as operation completes
Handle lock failures: Plan for scenarios when locks can't be acquired
Monitor stuck locks: Set up alerts for long-running locks
Use force sparingly: Only force-release when absolutely necessary
Document lock usage: Keep records of lock operations
Error Handling
Common lock errors and solutions:
Lock already exists
# Check who owns the lock
wheels deploy lock status
# Wait for it to be released
wheels deploy lock wait
# Or coordinate with lock owner
Lock expired during operation
# Extend lock duration if still needed
wheels deploy lock acquire --extend
Cannot release lock
# Verify you own the lock
wheels deploy lock status --verbose
# Force release if necessary
wheels deploy lock force-release --reason "Lock owner unavailable"
Integration
The lock system integrates with:
CI/CD pipelines for automated deployments
Monitoring systems for lock alerts
Deployment tools for automatic locking
Team communication tools for notifications
See Also
deploy exec - Execute deployment
deploy status - Check deployment status
deploy rollback - Rollback deployment
Last updated
Was this helpful?