3.8 KiB
3.8 KiB
Project Mycelium Deployment Scripts
This directory contains improved deployment scripts for the Project Mycelium that handle repository and directory management robustly.
Scripts Overview
Development Environment
- Script:
tf-marketplace-dev.sh
- Domain: dev.threefold.pro
- Port: 9998
- Branch: development
- Service: tf-marketplace-dev
Production Environment
- Script:
tf-marketplace-prod.sh
- Domain: threefold.pro
- Port: 9999
- Branch: main
- Service: tf-marketplace
Key Improvements
1. Robust Directory/Repository Handling
- ✅ Creates directory structure if it doesn't exist
- ✅ Handles both fresh clones and existing repositories
- ✅ Properly updates existing repositories with
git reset --hard
- ✅ Validates git repository integrity
- ✅ Uses correct working directories throughout
2. Error Handling
- ✅ Exit on error (
set -e
) - ✅ Validates cargo availability
- ✅ Checks for Cargo.toml presence
- ✅ Proper error messages with context
3. Environment-Specific Configuration
- ✅ Separate scripts for dev and prod environments
- ✅ Correct ports (9998 for dev, 9999 for prod)
- ✅ Correct branches (development for dev, main for prod)
- ✅ Clear environment identification in logs
Installation
1. Copy Scripts to Server
# Copy the deployment scripts with explicit naming
sudo cp tf-marketplace-dev.sh /etc/zinit/cmds/tf-marketplace-dev.sh
sudo cp tf-marketplace-prod.sh /etc/zinit/cmds/tf-marketplace-prod.sh
sudo chmod +x /etc/zinit/cmds/tf-marketplace-dev.sh
sudo chmod +x /etc/zinit/cmds/tf-marketplace-prod.sh
2. Install Zinit Service Definitions
# Copy service definitions from config directory
sudo cp ../config/zinit/tf-marketplace-dev.yaml /etc/zinit/tf-marketplace-dev.yaml
sudo cp ../config/zinit/tf-marketplace-prod.yaml /etc/zinit/tf-marketplace-prod.yaml
Usage
Development Deployment
# Start development service
zinit start tf-marketplace-dev
# Monitor development service
zinit monitor tf-marketplace-dev
# View development logs
zinit log tf-marketplace-dev
Production Deployment
# Start production service
zinit start tf-marketplace
# Monitor production service
zinit monitor tf-marketplace
# View production logs
zinit log tf-marketplace
Comparison with Original Script
Original Issues Fixed
-
Directory Check Logic:
- ❌ Original:
[ ! -d "$DIR_NAME" ] && git clone "$REPO_URL"
- ✅ Fixed: Proper path handling and working directory management
- ❌ Original:
-
Missing Updates:
- ❌ Original: No git pull for existing repositories
- ✅ Fixed:
git reset --hard origin/branch
for clean updates
-
Error Handling:
- ❌ Original: No error checking
- ✅ Fixed: Comprehensive error handling and validation
-
Path Consistency:
- ❌ Original: Mixed path conventions
- ✅ Fixed: Consistent with existing deployment infrastructure
Monitoring and Troubleshooting
Check Service Status
zinit list | grep tf-marketplace
View Real-time Logs
# Development
tail -f /var/log/zinit/tf-marketplace-dev.log
# Production
tail -f /var/log/zinit/tf-marketplace.log
Manual Testing
# Test development script manually
sudo /etc/zinit/cmds/tf-marketplace-dev.sh
# Test production script manually
sudo /etc/zinit/cmds/tf-marketplace.sh
Integration with Existing Infrastructure
These scripts are designed to work seamlessly with:
- Existing Makefile deployment targets (
deploy-dev
,deploy-prod
) - Current Caddy configuration
- Existing zinit service management
- Current directory structure conventions
The scripts maintain compatibility with the existing deployment workflow while providing more robust error handling and repository management.