init projectmycelium
This commit is contained in:
139
scripts/README.md
Normal file
139
scripts/README.md
Normal file
@@ -0,0 +1,139 @@
|
||||
# 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`](tf-marketplace-dev.sh)
|
||||
- **Domain**: dev.threefold.pro
|
||||
- **Port**: 9998
|
||||
- **Branch**: development
|
||||
- **Service**: tf-marketplace-dev
|
||||
|
||||
### Production Environment
|
||||
- **Script**: [`tf-marketplace-prod.sh`](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
|
||||
```bash
|
||||
# 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
|
||||
```bash
|
||||
# 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
|
||||
```bash
|
||||
# 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
|
||||
```bash
|
||||
# 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
|
||||
|
||||
1. **Directory Check Logic**:
|
||||
- ❌ Original: `[ ! -d "$DIR_NAME" ] && git clone "$REPO_URL"`
|
||||
- ✅ Fixed: Proper path handling and working directory management
|
||||
|
||||
2. **Missing Updates**:
|
||||
- ❌ Original: No git pull for existing repositories
|
||||
- ✅ Fixed: `git reset --hard origin/branch` for clean updates
|
||||
|
||||
3. **Error Handling**:
|
||||
- ❌ Original: No error checking
|
||||
- ✅ Fixed: Comprehensive error handling and validation
|
||||
|
||||
4. **Path Consistency**:
|
||||
- ❌ Original: Mixed path conventions
|
||||
- ✅ Fixed: Consistent with existing deployment infrastructure
|
||||
|
||||
## Monitoring and Troubleshooting
|
||||
|
||||
### Check Service Status
|
||||
```bash
|
||||
zinit list | grep tf-marketplace
|
||||
```
|
||||
|
||||
### View Real-time Logs
|
||||
```bash
|
||||
# Development
|
||||
tail -f /var/log/zinit/tf-marketplace-dev.log
|
||||
|
||||
# Production
|
||||
tail -f /var/log/zinit/tf-marketplace.log
|
||||
```
|
||||
|
||||
### Manual Testing
|
||||
```bash
|
||||
# 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`](../Makefile:14), [`deploy-prod`](../Makefile:19))
|
||||
- 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.
|
Reference in New Issue
Block a user