init projectmycelium

This commit is contained in:
mik-tf
2025-09-01 21:37:01 -04:00
commit b41efb0e99
319 changed files with 128160 additions and 0 deletions

139
scripts/README.md Normal file
View 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.