script
This commit is contained in:
		
							parent
							
								
									ec0ee12ae5
								
							
						
					
					
						commit
						9d6ba83378
					
				
							
								
								
									
										124
									
								
								deploy.sh
									
									
									
									
									
								
							
							
						
						
									
										124
									
								
								deploy.sh
									
									
									
									
									
								
							@ -39,45 +39,104 @@ run_as_user() {
 | 
				
			|||||||
check_node_env() {
 | 
					check_node_env() {
 | 
				
			||||||
    echo "🔍 Checking Node.js environment..."
 | 
					    echo "🔍 Checking Node.js environment..."
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    # Check if npm/node are available in original user's environment
 | 
					    # First, try to source nvm and check
 | 
				
			||||||
    if run_as_user "command -v npm" &> /dev/null && run_as_user "command -v node" &> /dev/null; then
 | 
					    if [ "$ORIGINAL_USER" != "root" ]; then
 | 
				
			||||||
        NPM_VERSION=$(run_as_user "npm --version")
 | 
					        echo "🔍 Checking user environment for nvm..."
 | 
				
			||||||
        NODE_VERSION=$(run_as_user "node --version")
 | 
					        
 | 
				
			||||||
        echo "✅ npm found: $NPM_VERSION"
 | 
					        # Try to source nvm and check npm/node
 | 
				
			||||||
        echo "✅ Node.js found: $NODE_VERSION"
 | 
					        if sudo -u "$ORIGINAL_USER" -i bash -c "
 | 
				
			||||||
        return 0
 | 
					            # Source nvm if it exists
 | 
				
			||||||
    fi
 | 
					            [ -s '$ORIGINAL_HOME/.nvm/nvm.sh' ] && source '$ORIGINAL_HOME/.nvm/nvm.sh'
 | 
				
			||||||
    
 | 
					            [ -s '$ORIGINAL_HOME/.bashrc' ] && source '$ORIGINAL_HOME/.bashrc'
 | 
				
			||||||
    # Check common nvm installation paths
 | 
					            [ -s '$ORIGINAL_HOME/.profile' ] && source '$ORIGINAL_HOME/.profile'
 | 
				
			||||||
    NVM_PATHS=(
 | 
					            
 | 
				
			||||||
        "$ORIGINAL_HOME/.nvm/versions/node/*/bin"
 | 
					            # Check if npm and node are available
 | 
				
			||||||
        "$ORIGINAL_HOME/.volta/bin"
 | 
					            command -v npm &> /dev/null && command -v node &> /dev/null
 | 
				
			||||||
        "/usr/local/bin"
 | 
					        "; then
 | 
				
			||||||
        "/usr/bin"
 | 
					            # Get versions using the same approach
 | 
				
			||||||
    )
 | 
					            NPM_VERSION=$(sudo -u "$ORIGINAL_USER" -i bash -c "
 | 
				
			||||||
    
 | 
					                [ -s '$ORIGINAL_HOME/.nvm/nvm.sh' ] && source '$ORIGINAL_HOME/.nvm/nvm.sh'
 | 
				
			||||||
    for nvm_path in "${NVM_PATHS[@]}"; do
 | 
					                [ -s '$ORIGINAL_HOME/.bashrc' ] && source '$ORIGINAL_HOME/.bashrc'
 | 
				
			||||||
        if [ -d "$nvm_path" ] && [ -x "$nvm_path/npm" ] && [ -x "$nvm_path/node" ]; then
 | 
					                npm --version 2>/dev/null || echo 'unknown'
 | 
				
			||||||
            echo "✅ Found Node.js in: $nvm_path"
 | 
					            ")
 | 
				
			||||||
            export PATH="$nvm_path:$PATH"
 | 
					            NODE_VERSION=$(sudo -u "$ORIGINAL_USER" -i bash -c "
 | 
				
			||||||
            NPM_VERSION=$("$nvm_path/npm" --version)
 | 
					                [ -s '$ORIGINAL_HOME/.nvm/nvm.sh' ] && source '$ORIGINAL_HOME/.nvm/nvm.sh'
 | 
				
			||||||
            NODE_VERSION=$("$nvm_path/node" --version)
 | 
					                [ -s '$ORIGINAL_HOME/.bashrc' ] && source '$ORIGINAL_HOME/.bashrc'
 | 
				
			||||||
 | 
					                node --version 2>/dev/null || echo 'unknown'
 | 
				
			||||||
 | 
					            ")
 | 
				
			||||||
            echo "✅ npm found: $NPM_VERSION"
 | 
					            echo "✅ npm found: $NPM_VERSION"
 | 
				
			||||||
            echo "✅ Node.js found: $NODE_VERSION"
 | 
					            echo "✅ Node.js found: $NODE_VERSION"
 | 
				
			||||||
            return 0
 | 
					            return 0
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    # Fallback: Check specific nvm paths directly
 | 
				
			||||||
 | 
					    echo "🔍 Checking nvm installation paths..."
 | 
				
			||||||
 | 
					    NVM_DIRS=$(find "$ORIGINAL_HOME/.nvm/versions/node" -name "bin" -type d 2>/dev/null | head -5)
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    for nvm_bin in $NVM_DIRS; do
 | 
				
			||||||
 | 
					        if [ -x "$nvm_bin/npm" ] && [ -x "$nvm_bin/node" ]; then
 | 
				
			||||||
 | 
					            echo "✅ Found Node.js in: $nvm_bin"
 | 
				
			||||||
 | 
					            NPM_VERSION=$("$nvm_bin/npm" --version 2>/dev/null || echo "unknown")
 | 
				
			||||||
 | 
					            NODE_VERSION=$("$nvm_bin/node" --version 2>/dev/null || echo "unknown")
 | 
				
			||||||
 | 
					            echo "✅ npm found: $NPM_VERSION"
 | 
				
			||||||
 | 
					            echo "✅ Node.js found: $NODE_VERSION"
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            # Set PATH for the rest of the script
 | 
				
			||||||
 | 
					            export PATH="$nvm_bin:$PATH"
 | 
				
			||||||
 | 
					            return 0
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    echo "❌ Error: npm/node not found in user environment"
 | 
					    # Check system-wide installation
 | 
				
			||||||
 | 
					    echo "🔍 Checking system-wide installation..."
 | 
				
			||||||
 | 
					    if command -v npm &> /dev/null && command -v node &> /dev/null; then
 | 
				
			||||||
 | 
					        NPM_VERSION=$(npm --version)
 | 
				
			||||||
 | 
					        NODE_VERSION=$(node --version)
 | 
				
			||||||
 | 
					        echo "✅ npm found (system): $NPM_VERSION"
 | 
				
			||||||
 | 
					        echo "✅ Node.js found (system): $NODE_VERSION"
 | 
				
			||||||
 | 
					        return 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    echo "❌ Error: npm/node not found in any location"
 | 
				
			||||||
 | 
					    echo ""
 | 
				
			||||||
 | 
					    echo "🔍 Checked locations:"
 | 
				
			||||||
 | 
					    echo "   - User environment with nvm sourcing"
 | 
				
			||||||
 | 
					    echo "   - $ORIGINAL_HOME/.nvm/versions/node/*/bin"
 | 
				
			||||||
 | 
					    echo "   - System PATH: /usr/local/bin, /usr/bin"
 | 
				
			||||||
    echo ""
 | 
					    echo ""
 | 
				
			||||||
    echo "💡 Solutions:"
 | 
					    echo "💡 Solutions:"
 | 
				
			||||||
    echo "   1. Run 'npm run build' as user first, then run this script"
 | 
					    echo "   1. Build first: npm run build (as $ORIGINAL_USER)"
 | 
				
			||||||
    echo "   2. Install Node.js system-wide"
 | 
					    echo "   2. Then run: sudo ./deploy.sh"
 | 
				
			||||||
    echo "   3. Or run: cd '$PWD' && npm run build && sudo ./deploy.sh"
 | 
					    echo "   3. Or install Node.js system-wide: curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - && sudo apt-get install -y nodejs"
 | 
				
			||||||
    echo ""
 | 
					    echo ""
 | 
				
			||||||
    return 1
 | 
					    return 1
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Enhanced build function
 | 
				
			||||||
 | 
					build_application() {
 | 
				
			||||||
 | 
					    echo "📦 Building application as user $ORIGINAL_USER..."
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    # Use nvm-aware build command
 | 
				
			||||||
 | 
					    if sudo -u "$ORIGINAL_USER" -i bash -c "
 | 
				
			||||||
 | 
					        cd '$PWD'
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        # Source nvm if available
 | 
				
			||||||
 | 
					        [ -s '$ORIGINAL_HOME/.nvm/nvm.sh' ] && source '$ORIGINAL_HOME/.nvm/nvm.sh'
 | 
				
			||||||
 | 
					        [ -s '$ORIGINAL_HOME/.bashrc' ] && source '$ORIGINAL_HOME/.bashrc'
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        # Run build
 | 
				
			||||||
 | 
					        npm run build
 | 
				
			||||||
 | 
					    "; then
 | 
				
			||||||
 | 
					        echo "✅ Build completed successfully"
 | 
				
			||||||
 | 
					        return 0
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        echo "❌ Error: Build failed"
 | 
				
			||||||
 | 
					        echo "💡 Try running manually: npm run build"
 | 
				
			||||||
 | 
					        return 1
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Check Node.js environment
 | 
					# Check Node.js environment
 | 
				
			||||||
if ! check_node_env; then
 | 
					if ! check_node_env; then
 | 
				
			||||||
    exit 1
 | 
					    exit 1
 | 
				
			||||||
@ -85,24 +144,17 @@ fi
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Check if dist directory exists or can be built
 | 
					# Check if dist directory exists or can be built
 | 
				
			||||||
if [ ! -d "dist" ]; then
 | 
					if [ ! -d "dist" ]; then
 | 
				
			||||||
    echo "📦 Building application as user $ORIGINAL_USER..."
 | 
					    if ! build_application; then
 | 
				
			||||||
    if ! run_as_user "npm run build"; then
 | 
					 | 
				
			||||||
        echo "❌ Error: Build failed"
 | 
					 | 
				
			||||||
        echo "💡 Try running: npm run build (as user) before deployment"
 | 
					 | 
				
			||||||
        exit 1
 | 
					        exit 1
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    echo "✅ Build completed successfully"
 | 
					 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
    echo "📦 Found existing dist/ directory"
 | 
					    echo "📦 Found existing dist/ directory"
 | 
				
			||||||
    read -p "🤔 Rebuild application? (y/N): " -n 1 -r
 | 
					    read -p "🤔 Rebuild application? (y/N): " -n 1 -r
 | 
				
			||||||
    echo
 | 
					    echo
 | 
				
			||||||
    if [[ $REPLY =~ ^[Yy]$ ]]; then
 | 
					    if [[ $REPLY =~ ^[Yy]$ ]]; then
 | 
				
			||||||
        echo "📦 Rebuilding application as user $ORIGINAL_USER..."
 | 
					        if ! build_application; then
 | 
				
			||||||
        if ! run_as_user "npm run build"; then
 | 
					 | 
				
			||||||
            echo "❌ Error: Rebuild failed"
 | 
					 | 
				
			||||||
            exit 1
 | 
					            exit 1
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
        echo "✅ Rebuild completed successfully"
 | 
					 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        echo "📦 Using existing build"
 | 
					        echo "📦 Using existing build"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user