Added Linux Support
This commit is contained in:
parent
ce48274ff8
commit
ed88df9a35
185
Launch-Borealis.sh
Normal file
185
Launch-Borealis.sh
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# --------------------------------------------------------------------
|
||||||
|
# Deploying Borealis - Workflow Automation Tool
|
||||||
|
#
|
||||||
|
# This script deploys the Borealis Workflow Automation Tool by:
|
||||||
|
# - Detecting the Linux distro and installing required system dependencies.
|
||||||
|
# - Creating a Python virtual environment.
|
||||||
|
# - Copying server data.
|
||||||
|
# - Setting up a React UI application.
|
||||||
|
# - Installing Python and Node dependencies.
|
||||||
|
# - Building the React app.
|
||||||
|
# - Launching the Flask server.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# chmod +x deploy_borealis.sh
|
||||||
|
# ./deploy_borealis.sh
|
||||||
|
# --------------------------------------------------------------------
|
||||||
|
|
||||||
|
# ---------------------- Initialization & Visuals ----------------------
|
||||||
|
GREEN="\033[0;32m"
|
||||||
|
YELLOW="\033[1;33m"
|
||||||
|
RED="\033[0;31m"
|
||||||
|
RESET="\033[0m"
|
||||||
|
CHECKMARK="✅"
|
||||||
|
HOURGLASS="⏳"
|
||||||
|
CROSSMARK="❌"
|
||||||
|
INFO="ℹ️"
|
||||||
|
|
||||||
|
# Function to run a step with progress visuals and error checking
|
||||||
|
run_step() {
|
||||||
|
local message="$1"
|
||||||
|
shift
|
||||||
|
echo -ne "${HOURGLASS} ${message}... "
|
||||||
|
if "$@"; then
|
||||||
|
echo -e "\r${CHECKMARK} ${message}"
|
||||||
|
else
|
||||||
|
echo -e "\r${CROSSMARK} ${message} - Failed${RESET}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
echo -e "${GREEN}Deploying Borealis - Workflow Automation Tool...${RESET}"
|
||||||
|
echo "===================================================================================="
|
||||||
|
|
||||||
|
# ---------------------- Detect Linux Distribution ----------------------
|
||||||
|
detect_distro() {
|
||||||
|
# This function detects the Linux distribution by sourcing /etc/os-release.
|
||||||
|
if [ -f /etc/os-release ]; then
|
||||||
|
. /etc/os-release
|
||||||
|
DISTRO_ID=$ID
|
||||||
|
else
|
||||||
|
DISTRO_ID="unknown"
|
||||||
|
fi
|
||||||
|
echo -e "${INFO} Detected OS: ${DISTRO_ID}"
|
||||||
|
}
|
||||||
|
detect_distro
|
||||||
|
|
||||||
|
# ---------------------- Install System Dependencies ----------------------
|
||||||
|
install_core_dependencies() {
|
||||||
|
# Install required packages based on detected Linux distribution.
|
||||||
|
case "$DISTRO_ID" in
|
||||||
|
ubuntu|debian)
|
||||||
|
sudo apt update -qq
|
||||||
|
sudo apt install -y python3 python3-venv python3-pip nodejs npm git curl
|
||||||
|
;;
|
||||||
|
rhel|centos|fedora|rocky)
|
||||||
|
# For Fedora and similar distributions, the venv module is built-in so we omit python3-venv.
|
||||||
|
sudo dnf install -y python3 python3-pip nodejs npm git curl
|
||||||
|
;;
|
||||||
|
arch)
|
||||||
|
sudo pacman -Sy --noconfirm python python-venv python-pip nodejs npm git curl
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e "${RED}${CROSSMARK} Unsupported Linux distribution: ${DISTRO_ID}${RESET}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
run_step "Install System Dependencies" install_core_dependencies
|
||||||
|
|
||||||
|
# ---------------------- Path Setup ----------------------
|
||||||
|
# Variables and path definitions
|
||||||
|
venvFolder="Borealis-Workflow-Automation-Tool"
|
||||||
|
dataSource="Data"
|
||||||
|
dataDestination="${venvFolder}/Borealis"
|
||||||
|
customUIPath="${dataSource}/WebUI"
|
||||||
|
webUIDestination="${venvFolder}/web-interface"
|
||||||
|
|
||||||
|
# ---------------------- Create Python Virtual Environment ----------------------
|
||||||
|
run_step "Create Virtual Python Environment" bash -c "
|
||||||
|
# Check if virtual environment already exists; if not, create one.
|
||||||
|
if [ ! -f '${venvFolder}/bin/activate' ]; then
|
||||||
|
python3 -m venv '${venvFolder}'
|
||||||
|
fi
|
||||||
|
"
|
||||||
|
|
||||||
|
# ---------------------- Copy Borealis Data ----------------------
|
||||||
|
run_step "Copy Borealis Server Data into Virtual Python Environment" bash -c "
|
||||||
|
# If the Data folder exists, remove any existing server data folder and copy fresh data.
|
||||||
|
if [ -d \"$dataSource\" ]; then
|
||||||
|
rm -rf \"$dataDestination\"
|
||||||
|
mkdir -p \"$dataDestination\"
|
||||||
|
cp -r \"$dataSource/\"* \"$dataDestination\"
|
||||||
|
else
|
||||||
|
echo -e \"\r${INFO} Warning: Data folder not found, skipping copy.${RESET}\"
|
||||||
|
fi
|
||||||
|
true
|
||||||
|
"
|
||||||
|
|
||||||
|
# ---------------------- React UI Setup ----------------------
|
||||||
|
run_step "Create a new ReactJS App in ${webUIDestination}" bash -c "
|
||||||
|
# Create a React app if the destination folder does not exist.
|
||||||
|
if [ ! -d \"$webUIDestination\" ]; then
|
||||||
|
# Set CI=true and add --loglevel=error to suppress funding and audit messages
|
||||||
|
CI=true npx create-react-app \"$webUIDestination\" --silent --use-npm --loglevel=error
|
||||||
|
fi
|
||||||
|
"
|
||||||
|
|
||||||
|
run_step "Overwrite React App with Custom Files" bash -c "
|
||||||
|
# If custom UI files exist, copy them into the React app folder.
|
||||||
|
if [ -d \"$customUIPath\" ]; then
|
||||||
|
cp -r \"$customUIPath/\"* \"$webUIDestination\"
|
||||||
|
else
|
||||||
|
echo -e \"\r${INFO} No custom UI found, using default React app.${RESET}\"
|
||||||
|
fi
|
||||||
|
true
|
||||||
|
"
|
||||||
|
|
||||||
|
run_step "Remove Existing React Build (if any)" bash -c "
|
||||||
|
# Remove the build folder if it exists to ensure a fresh build.
|
||||||
|
if [ -d \"$webUIDestination/build\" ]; then
|
||||||
|
rm -rf \"$webUIDestination/build\"
|
||||||
|
fi
|
||||||
|
true
|
||||||
|
"
|
||||||
|
|
||||||
|
# ---------------------- Activate Python Virtual Environment ----------------------
|
||||||
|
# Activate the Python virtual environment for subsequent commands.
|
||||||
|
source "${venvFolder}/bin/activate"
|
||||||
|
|
||||||
|
# ---------------------- Install Python Dependencies ----------------------
|
||||||
|
run_step "Install Python Dependencies into Virtual Python Environment" bash -c "
|
||||||
|
# Install Python packages if a requirements.txt file is present.
|
||||||
|
if [ -f \"requirements.txt\" ]; then
|
||||||
|
pip install -q -r requirements.txt
|
||||||
|
else
|
||||||
|
echo -e \"\r${INFO} No requirements.txt found, skipping Python packages.${RESET}\"
|
||||||
|
fi
|
||||||
|
true
|
||||||
|
"
|
||||||
|
|
||||||
|
# ---------------------- Install Node Dependencies & Build React UI ----------------------
|
||||||
|
run_step "Install React App Dependencies" bash -c "
|
||||||
|
# Install npm dependencies if package.json exists.
|
||||||
|
if [ -f \"$webUIDestination/package.json\" ]; then
|
||||||
|
cd \"$webUIDestination\"
|
||||||
|
# Add --loglevel=error to suppress npm's funding and audit messages
|
||||||
|
npm install --silent --no-fund --audit=false --loglevel=error
|
||||||
|
cd -
|
||||||
|
fi
|
||||||
|
"
|
||||||
|
|
||||||
|
run_step "Install React Flow and UI Libraries" bash -c "
|
||||||
|
# Install additional React libraries.
|
||||||
|
cd \"$webUIDestination\"
|
||||||
|
npm install reactflow --silent --no-fund --audit=false --loglevel=error
|
||||||
|
npm install --silent @mui/material @mui/icons-material @emotion/react @emotion/styled --no-fund --audit=false --loglevel=error
|
||||||
|
cd -
|
||||||
|
"
|
||||||
|
|
||||||
|
run_step "Build React App" bash -c "
|
||||||
|
# Build the React app to create production-ready files.
|
||||||
|
cd \"$webUIDestination\"
|
||||||
|
npm run build --silent --loglevel=error
|
||||||
|
cd -
|
||||||
|
"
|
||||||
|
|
||||||
|
# ---------------------- Launch Flask Server ----------------------
|
||||||
|
cd "${venvFolder}"
|
||||||
|
echo -e "\n${GREEN}Launching Borealis...${RESET}"
|
||||||
|
echo "===================================================================================="
|
||||||
|
echo -ne "${HOURGLASS} Starting Flask server... "
|
||||||
|
python3 Borealis/server.py
|
||||||
|
echo -e "\r${CHECKMARK} Borealis Launched Successfully!"
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user