oneuptime/configure.sh

184 lines
5.0 KiB
Bash
Raw Normal View History

2022-11-08 15:24:58 +00:00
#!/usr/bin/env bash
2023-07-19 11:34:59 +00:00
set -a
2022-11-08 15:24:58 +00:00
# Talk to the user
2022-11-08 17:17:58 +00:00
echo "Welcome to the OneUptime 🟢 Runner"
2022-11-08 15:24:58 +00:00
echo ""
echo ""
echo ""
echo "Please enter your sudo password now:"
sudo echo ""
echo "Thanks! 🙏"
echo ""
echo "Ok! We'll take it from here 🚀"
echo "Making sure any stack that might exist is stopped"
# If Mac
if [[ "$OSTYPE" == "darwin"* ]]; then
2022-11-08 17:17:58 +00:00
if [[ ! $(which brew) ]]; then
echo "Homebrew not installed. Please install homebrew and restart installer"
exit
fi
2022-11-08 15:24:58 +00:00
fi
2023-08-07 09:26:15 +00:00
2023-08-07 09:01:21 +00:00
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
2023-08-07 18:57:08 +00:00
DISTRIB=$(awk -F= '/^ID/{print $2}' /etc/os-release)
2023-08-07 09:01:21 +00:00
if [[ ${DISTRIB} = "ubuntu"* ]]; then
echo "Grabbing latest apt caches"
sudo apt-get update
elif [[ ${DISTRIB} = "debian"* ]]; then
2022-11-08 17:17:58 +00:00
echo "Grabbing latest apt caches"
sudo apt update
2023-08-07 09:01:21 +00:00
fi
2022-11-08 15:24:58 +00:00
fi
2023-08-07 09:01:21 +00:00
2022-11-08 15:24:58 +00:00
# clone oneuptime
echo "Installing OneUptime 🟢"
if [[ ! $(which git) ]]; then
2023-08-07 09:01:21 +00:00
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
2023-08-07 18:57:08 +00:00
DISTRIB=$(awk -F= '/^ID/{print $2}' /etc/os-release)
2023-08-07 09:01:21 +00:00
if [[ ${DISTRIB} = "ubuntu"* ]] || [[ ${DISTRIB} = "debian"* ]]; then
sudo apt install -y git curl
2023-08-07 09:01:21 +00:00
elif [[ ${DISTRIB} = "fedora"* ]] || [[ ${DISTRIB} = "almalinux"* ]] || [[ ${DISTRIB} = "rockylinux"* ]] || [[ ${DISTRIB} = "rhel"* ]]; then
sudo dnf install git curl -y
2023-08-07 09:01:21 +00:00
fi
2022-11-08 17:17:58 +00:00
fi
if [[ "$OSTYPE" == "darwin"* ]]; then
brew install git curl
2022-11-08 17:17:58 +00:00
fi
2022-11-08 15:24:58 +00:00
fi
2023-08-07 09:26:15 +00:00
2023-04-18 13:26:37 +00:00
if [[ $IS_DOCKER == "true" ]]
then
2023-04-18 13:20:14 +00:00
echo "This script should run in the docker container."
else
GIT_REPO_URL=$(git config --get remote.origin.url)
if [[ $GIT_REPO_URL != *oneuptime* ]] # * is used for pattern matching
then
git clone https://github.com/OneUptime/oneuptime.git || true
cd oneuptime
fi
2022-11-08 15:24:58 +00:00
fi
2023-04-18 13:20:14 +00:00
2022-11-09 13:43:42 +00:00
# if this script is not running in CI/CD
if [ -z "$CI_PIPELINE_ID" ]
then
2023-04-18 13:56:58 +00:00
if [[ $IS_DOCKER == "true" ]]
then
echo "Running in docker container. Skipping git pull."
else
git pull
fi
2022-11-09 13:43:42 +00:00
fi
2022-11-08 15:24:58 +00:00
2022-11-09 14:51:19 +00:00
cd ..
2022-11-08 15:24:58 +00:00
if [[ ! $(which node) && ! $(node --version) ]]; then
if [[ "$OSTYPE" != "darwin"* ]]; then
echo "Setting up NodeJS"
2023-06-08 19:52:25 +00:00
sudo curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
nvm install lts/*
nvm use lts/*
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/node" "/usr/local/bin/node"
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npm" "/usr/local/bin/npm"
2022-11-08 15:24:58 +00:00
fi
if [[ "$OSTYPE" == "darwin"* ]]; then
brew install nodejs
fi
fi
2023-08-07 09:26:15 +00:00
if [[ ! $(which npm) ]]; then
2023-08-07 09:01:21 +00:00
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
2023-08-07 18:57:08 +00:00
DISTRIB=$(awk -F= '/^ID/{print $2}' /etc/os-release)
2023-08-07 09:01:21 +00:00
if [[ ${DISTRIB} = "ubuntu"* ]] || [[ ${DISTRIB} = "debian"* ]]; then
2022-12-30 13:19:45 +00:00
echo "Setting up NPM"
sudo apt-get install -y npm
2023-08-07 09:01:21 +00:00
elif [[ ${DISTRIB} = "fedora"* ]] || [[ ${DISTRIB} = "almalinux"* ]] || [[ ${DISTRIB} = "rockylinux"* ]] || [[ ${DISTRIB} = "rhel"* ]]; then
echo "Setting up NPM"
sudo dnf install -y npm
fi
2023-08-07 09:26:15 +00:00
fi
fi
2022-12-30 13:19:45 +00:00
2022-11-09 18:23:01 +00:00
if [[ ! $(which docker) && ! $(docker --version) ]]; then
echo "Setting up Docker"
sudo curl -sSL https://get.docker.com/ | sh
fi
# If docker still fails to install, then quit.
if [[ ! $(which docker) && ! $(docker --version) ]]; then
echo -e "Failed to install docker. Please install Docker manually here: https://docs.docker.com/install."
echo -e "Exiting the OneUptime installer."
exit
fi
# enable docker without sudo
sudo usermod -aG docker "${USER}" || true
2022-12-07 07:49:18 +00:00
if [[ ! $(which docker-compose) && ! $(docker compose --version) ]]; then
2022-11-09 18:23:01 +00:00
mkdir -p /usr/local/lib/docker/cli-plugins
2022-12-07 07:49:18 +00:00
sudo curl -SL https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/lib/docker/cli-plugins/docker-compose
2022-11-09 18:23:01 +00:00
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
docker compose version
fi
2022-11-09 18:34:16 +00:00
if [[ ! $(which gomplate) ]]; then
2022-11-09 19:03:56 +00:00
ARCHITECTURE=$(uname -m)
2022-11-09 19:18:04 +00:00
if [[ $ARCHITECTURE == "aarch64" ]]; then
ARCHITECTURE="arm64"
2022-11-09 19:03:56 +00:00
fi
2022-11-09 21:09:56 +00:00
if [[ $ARCHITECTURE == "x86_64" ]]; then
ARCHITECTURE="amd64"
fi
2022-11-09 21:05:46 +00:00
echo "ARCHITECTURE:"
echo "$(uname -s) $(uname -m)"
2022-11-09 19:20:42 +00:00
sudo curl -o /usr/local/bin/gomplate -sSL https://github.com/hairyhenderson/gomplate/releases/download/v3.11.3/gomplate_$(uname -s)-$ARCHITECTURE
2022-11-09 18:36:26 +00:00
sudo chmod 755 /usr/local/bin/gomplate
2022-11-09 18:34:16 +00:00
fi
2022-11-08 15:24:58 +00:00
2022-11-09 19:13:41 +00:00
2022-11-09 12:53:55 +00:00
if [[ ! $(which ts-node) ]]; then
sudo npm install -g ts-node
fi
2022-11-08 15:24:58 +00:00
cd oneuptime
# Create .env file if it does not exist.
touch config.env
2023-06-26 10:09:58 +00:00
# Reload terminal with newly installed packages.
source ~/.bashrc
2022-11-08 15:24:58 +00:00
#Run a scirpt to merge config.env.tpl to config.env
2023-11-03 15:57:05 +00:00
node ./Scripts/Install/MergeEnvTemplate.js
2022-11-08 15:24:58 +00:00
# Load env values from config.env
2023-07-19 11:16:29 +00:00
export $(grep -v '^#' config.env | xargs)
2022-11-08 15:24:58 +00:00
# Write env vars in config files.
2023-04-12 09:49:45 +00:00
for directory_name in $(find . -maxdepth 1 -type d) ; do
2022-11-08 17:40:45 +00:00
if [ -f "$directory_name/Dockerfile.tpl" ]; then
2022-12-28 14:20:35 +00:00
cat $directory_name/Dockerfile.tpl | gomplate > $directory_name/Dockerfile
2022-11-08 17:19:49 +00:00
fi
2023-07-17 19:06:01 +00:00
done