Files

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

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

  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

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.